2017-08-15 61 views
1

目前我有一個功能登錄程序。我的用戶訪問特定的登錄視圖,輸入他們的用戶名和密碼,訪問並重定向到特定的儀表板。如何使用CakePHP中的元素進行登錄?

在我的用戶控制:

public function login() { 

    if ($this->request->is('post')) { 
     if ($this->Auth->login()) { 
      return $this->redirect(); 
     } 
     $this->Session->setFlash('Incorrect user or password.'); 
    } 
} 

登錄視圖:

<h1>Access with your username:</h1> 
<?php 
    echo $this->Form->create('User', array('action' => 'login')); 
     echo $this->Form->input('username', array('label' => 'User:')); 
     echo $this->Form->input('password', array('label' => 'Password:')); 
    echo $this->Form->end('Login'); 
?> 

問題來了,當我被要求直接在我的主菜單中添加一些登陸場。所以我嘗試將它們添加爲我的標題中的一個元素。它沒有工作。

我加入我的頭元素:

<div> 
    <?php 
     echo $this->Form->create('user', array('action' => 'login')); 
     echo $this->Form->input('username', array('placeholder' => 'User', 'label' => false)); 
     echo $this->Form->input('password', array('placeholder' => 'Password', 'label' => false)); 
     echo $this->Form->submit('Ingresar', array('div' => true)); 
     echo $this->Form->end(); 
    ?> 
</div> 

我輸入用戶名和密碼,點擊「登錄」按鈕。它引發我「不正確的用戶或密碼」。錯誤消息,並將我重定向到登錄操作的視圖(無需在用戶中登錄)。

在那裏,人們可以成功登錄沒有進一步的問題,但重點是要減少1的行動所需的點擊。

我錯過了什麼?我應該更改/添加/移動?

回答

0

在你的第二個html表單,模型User的類型不能爲它應該是

變化

echo $this->Form->create('user', array('action' => 'login')); 

echo $this->Form->create('User', array('action' => 'login')); 

注意從型號名稱u變更爲U

+0

要解釋你是ge的錯誤tting:當你提交表單(第二個)時,'AuthComponent'需要一個數組作爲'array('User'=> array('username'=>'***','password'=>'* **'))'但是在你的情況下,'AuthComponent'正在接收一個不同結構的數組array'('user'=> array('username'=>'***','password'=>'** *'))' –

+0

就是這樣。事後看來很明顯。非常感謝你! –