2013-03-21 103 views
0

我有以下登錄代碼:Kohana的用戶登錄添加錯誤

if ($logged == true) { 
       HTTP::redirect('profile/private'); 
      } else { 
       $validation = Validation::factory($_POST) 
         ->rule('username', 'not_empty') 
         ->rule('password', 'not_empty'); 
       if ($validation->check()) { 

       } 
       $errors = $validation->errors('login'); 

的情況下,這裏如果沒有輸入用戶名,正確的消息將被播種(我在的login.php文件的消息在郵件文件夾中例如:'username'=> array('not_empty'=>'字段:字段不能爲空',對於密碼字段也是一樣的)並且這兩個規則正常工作並且出錯 但是,當給出用戶名和密碼時並且用戶未被認證爲「有效」(例如錯誤的密碼或輸入錯誤的用戶名)我需要一個自定義錯誤消息(例如:'檢查用戶名或密碼,可能CAPSLOCK已被按下')如何實現?我不希望它是相對的只有一個字段像login.php字段中的所有消息。請幫助

回答

1

然後回答你的問題:這是一個額外的錯誤消息用於用戶的目的。這不是一個或您的模型的屬性(用戶名,密碼)的具體錯誤,所以這屬於您的控制器。

只需在您的控制器中,檢查用戶是否登錄並回顯錯誤。

if (!Auth::instance()->login($_POST['username'], $_POST['password'], $_POST['autologin'])) 
{ 
    echo 'Check username or password, Maybe CAPSLOCK is pressed'; 
} 
+0

我在註冊時採用了這種方式,它工作的很好,但我需要進行登錄驗證。當我檢查:$ logged = Auth :: instance() - >登錄($ _ POST ['username'],$ _POST ['password'],$ _POST ['autologin'] = false)我只有true或false 。我需要給用戶一個這樣的信息:「檢查用戶名或密碼,也許CAPSLOCK被按下」,這與任何特定的領域(我認爲是這樣)無關。 – masteryoda 2013-03-22 10:58:59

+0

然後你根本不需要驗證。只要檢查$ logged === false然後回顯錯誤。 – Daan 2013-03-22 11:39:31

+0

我認爲這是最好的方法。我會用它。 – masteryoda 2013-03-22 14:12:15

0

根據documentation如果您在沒有定義模板的情況下調用$ validation-> errors(),它將返回一個錯誤數組,然後您可以查看$ errors數組並確定哪些類型的錯誤你得到並作出適當的反應

+0

$ validation-> errors()在check()方法後爲null。我不知道我是否可以從$ logged = Auth :: instance() - > login($ _ POST ['username'],$ _POST ['password'],$ _POST ['autologin'] = false) 。我想我可以添加錯誤,例如用戶名字段與索引讓我們說'一般',這將工作,但它不知道錯誤是由用戶名生成。所以從這一點來看,這將是錯誤的。我在這裏發現了這個問題:https://github.com/mixu/useradmin,所以我認爲它可以使用。 – masteryoda 2013-03-22 09:47:54