2011-09-02 130 views
0

我目前正在爲我的應用程序使用AJAX登錄。在起始頁的頂部有點擊它時,打開與登錄表單對話框登錄鏈接,但我有幾個問題:CakePHP Ajax登錄驗證失敗

  1. 當用戶輸入錯誤或沒有數據,沒有錯誤顯示
  2. 當我點擊「登錄」和JsHelper更新了「模板」,我再次點擊「登錄」,他將我重定向到http://www.url.com/users/login(這不應該發生)
  3. 當我輸入正確的logindata時,重定向完成或顯示一條消息。

我想我現在會發布所有需要的代碼進行分析。

UsersController ::登錄()

public function login() { 
     if($this->RequestHandler->isAjax()) { 
      $this->layout = 'ajax'; 
      $this->render('/elements/users/login'); 
     } 
     return $this->Auth->login(); 
    } 

元件/ AJAX/login.ctp 這是登錄對話框的模板。

<?php echo $this->Session->flash(); ?> 
<fieldset> 
    <?php 
    echo $this->Session->flash(); 
    echo $this->Form->create(
      'User', 
      array(
       'controller' => 'users', 
       'action' => 'login' 
     ) 
    ); 
    echo $this->Form->input(
     'email', 
     array(
      'label' => 'E-Mail', 
      'style' => 'width: 270px;' 
     ) 
    ); 
    echo $this->Form->input(
     'password', 
     array(
      'style' => 'width: 270px;' 
     ) 
    ); 
    echo $this->Js->submit(
     'Login', 
     array('url' => array(
      'controller' => 'users', 
      'action' => 'login' 
     ), 
     'update' => '#loginContainer') 
    ); 
    echo $this->Form->end(); 
    ?> 
</fieldset> 

我覺得它有什麼做的UsersController ::登錄(),但我不知道到哪裏去尋找。所以,也許你可以幫助我?謝謝:)

回答

1

book上驗證::登錄():

有一點要注意的是,您必須手動將用戶重定向登錄後作爲loginRedirect不叫。 $這個 - > Auth->登錄($數據)在成功登錄後,0上失敗則返回1

因此,一些大致相同:

if ($this->Auth->login() === 1) { 
    $this->redirect('/'); 
} else { 
    $this->set('status', 'Bad login details'); 
} 

*徹底未經檢驗

連接用JavaScript編寫處理。

+0

非常感謝您的信息,我將它添加到我的代碼中,但沒有任何更改:/。昨天我爲CakePHP安裝了DebugKit,當我提交有效的logindata時,他向我顯示「調試計時器信息」。這完全是令人困惑的。爲什麼顯示?當我查看DebugKit的「請求」時,參數** isAjax **是* off *,但是爲什麼? O_O Btw。登錄失敗時仍然沒有顯示錯誤:/ – Fortuna

+0

這是更多示例代碼,然後您可以將其插入到應用程序中。 – Ivo

+0

@福爾圖納 - 任何運氣? – jagamot