2011-12-10 69 views
0

我有一個用戶名,密碼和提交按鈕的視圖。這個視圖被稱爲login.ctp,所以我之前使用CakePHP的方式是我在頁面頂部有一個<div>,在那個<div>登錄將在所有頁面中可見,所以基本上你可以從任何地方登錄,我正在使用AJAX。我現在的問題是,我不知道如何在CakePHP中執行此操作,因爲其他一些視圖有<form>標記,我認爲它也需要登錄<form>標記?所以他們conflict..Also,所以兩件事在頁面頂部進行登錄

  1. 我如何可以放置在頁面頂部的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'); ?>放在任何需要的位置。在你loginform.ctp文件,你應該有這樣的事情:

<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> 

只要你指定哪個控制器和操作形式是,蛋糕會照顧它,這樣的形式不衝突。

如果不工作,儘量只在html:

<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,當我登錄..它回來很好..但後來如果我去到另一個頁面..歡迎'名稱'消失就像忘記了會話? - 只有在我登錄後纔會出現歡迎'名字'..但是如果我改變頁面..它不見了.. – user710502