2015-01-06 89 views
1

我試圖避免修改此問題的供應商包。當我添加自定義字段並致電我的自定義驗證器時,由於驗證規則,我無法使用驗證碼確認用戶的電子郵件。目前在app/models/UserValidator.php使用此爲我的自定義驗證:Laravel + Confide:無法通過自定義驗證來確認用戶

<?php 

use Zizaco\Confide\UserValidator as ConfideUserValidator; 
use Zizaco\Confide\UserValidatorInterface; 

class UserValidator extends ConfideUserValidator implements UserValidatorInterface { 

    // Custom rules for account validation 
    public $rules = [ 
     'create' => [ 
      'first_name' => 'required|alpha|max:100', 
      'last_name' => 'required|alpha|max:100', 
      'username' => 'required|min:3|max:20|alpha_dash', 
      'email' => 'required|email|unique:users|max:100', 
      'password' => 'required|min:8', 
     ], 
     'update' => [ 
      'username' => 'required|min:3|max:20|alpha_dash', 
      'email' => 'required|email|unique:users|max:100', 
      'password' => 'required|min:8', 
     ] 
    ]; 

} 

我可以創建帳戶完全正常的,它只是將無法正常工作的確認。我把它backtraced到vendor/zizaco/confide/src/Confide/ConfideUser.php - 我發現,如果我註釋掉這個save作用下:

if ($this->isValid()) { 
    return parent::save($options); 
} 

return false; 

以及與此暫時替代它:

return parent::save($options); 

那麼作爲它應該一切都將正常工作。我在這裏錯過了什麼嗎?更新規則是否應該有關於confirmed列的內容?

編輯:提供了update規則集空白陣列擺脫錯誤的,但我需要當用戶更新他們的個人資料,以驗證這些領域..

回答

3

我認爲這個問題是,你試圖在用戶的電子郵件已經註冊後驗證用戶的電子郵件是唯一的。所以他們的電子郵件已經在數據庫中(因此不是唯一的)。刪除'unique:users |「應該允許你驗證字段。

'update' => [ 
     'username' => 'required|min:3|max:20|alpha_dash', 
     'email' => 'required|email|max:100', 
     'password' => 'required|min:8', 
    ] 
+0

是的,就是這樣。謝謝! – Winter