2011-12-10 6 views
0

사용자 이름, 암호 및 제출 버튼이있는보기가 있습니다. 이보기는 login.ctp이라고 불리 웠으므로 CakePHP 이전 버전에서는 페이지 상단에 <div>이 있었고 <div> 로그인은 모든 페이지에서 볼 수 있으므로 기본적으로 어디서나 로그인 할 수 있습니다. AJAX를 사용하고있었습니다. 내 문제는 이제 다른보기 중 일부가 <form> 태그를 가지고 있기 때문에 CakePHP에서 어떻게 수행해야할지 모르겠다. 로그인을 위해 <form> 태그가 필요하다고 생각 하는가? 그래서 그들은 이렇게 두 가지페이지 상단에서 로그인하십시오.

  1. , conflict..Also 어떻게 그 페이지의 상단에 다시 div에 배치하고이 UsersController 내 로그인 기능 작동 할 수 있습니까?

  2. <forms>이 충돌하지 않도록하려면 어떻게해야합니까?

관련 코드

<?php 
class UsersController extends AppController { 

    var $uses = array("User"); 
    var $components = array('Auth', 'Session'); 


    function index() 
    { 
     $this->set('users', $this->User->find('all')); 
     $this->layout = 'master_layout'; 
    } 

    function beforeFilter() { 
     $this->Auth->allow('add'); 
     } 

     function add() { 

      if (!empty($this->data)) { 
      //pass is hashed already 
      //->data['User']['password'] = $this->Auth->password($this->data['User']['password']); 
      if ($this->User->save($this->data)) { 
       $this->Session->setFlash('Your were registered!.'); 
           $this->redirect(array('action' => 'index')); 
      } 
      } 

     $this->layout = 'master_layout'; 
     } 

    //IF THE DATABASE IS SET UP CORRECTLY CAKE AUTHENTICATES AUTOMATICALLY NO 
    //LOGIC IS NEEDED FOR LOGIN http://book.cakephp.org/view/1250/Authentication 
    function login() { 
     $this->layout = 'master_layout'; 
     $this->data['User']['password'] = ''; 

    } 

    function logout() { 

    $this->redirect($this->Auth->logout()); 

    } 

} 
?> 

답변

1

이 매우 간단합니다. 한 페이지 이상을 반복적으로 양식을 작성하려면 요소를 사용해야합니다. app/views/elements 폴더에 loginform.ctp 파일을 만들고 원하는 위치에 <?php echo $this->element('loginform'); ?>을 입력하면됩니다. 양식은 양식이 충돌하지 않도록 케이크가 알아서 것입니다있는 컨트롤러와 액션 지정할 수있는 한

<div id="loginform"> 
<?php echo $form->create('User', array('controller' => 'Users','action' => 'login')); ?> 
<?php echo $form->input('email', array('label' => 'Email')) ?> 
<?php echo $form->input('password',array('type'=>'password', 'label' => 'password')) ?> 
<?php echo $form->submit('Submit'); ?> 
</div> 

: 당신의 loginform.ctp 파일에서는 다음과 같이 있어야합니다. 내가 로그인 할 때 다른 페이지 .. 환영에 갈 경우 다시 잘 온다 ..하지만 ..

<form id="UserLoginForm" method="post" action="https://stackoverflow.com/users/login" accept-charset="utf-8"><div style="display:none;"><input type="hidden" name="_method" value="POST" /></div><ul> 
<li><div class="input text required"><label for="UserEmail">Email</label><input name="data[User][email]" type="text" class="field text large" maxlength="255" value="" id="UserEmail" /></div></li> 
<li><div class="input password"><label for="UserPassword">password</label><input type="password" name="data[User][password]" class="field text large" value="" id="UserPassword" /></div></li> 
<li><div class="submit"><input type="submit" value="Submit" /></div></li> 
</ul> 
</form> 
+0

작은 질문 swieckie : 문제가 해결되지 않으면

, 단지 HTML을 시도 '이름'은 없어 졌나요? 세션을 잊어 버린 것 같은가요? - 환영합니다. '이름'은 로그인 한 직후에만 나오지만, 페이지가 바뀌면 사라집니다. .. – user710502

관련 문제