2013-08-17 57 views
2

我使用的是蛋糕2.3.8版本。我有一個註冊表格,用戶可以在表格中輸入用戶名和密碼。 我的模型驗證的樣子:cakephp錯誤 - 驗證顯示兩次

public $validate = array(
    'username' => array(
     'required' => array(
      'rule' => array('notEmpty'), 
      'message' => 'A username is required' 
     ), 
     'alphanumeric' => array(
      'rule' => 'alphaNumeric', 
      'message' => 'Usernames must only contain letters and numbers.' 
     ) 
    ), 


    'password' => array(
     'required' => array(
      'rule' => array('notEmpty'), 
      'message' => 'A password is required' 
     ) 
    )); 

現在奇怪的是在my site當我與它空間的用戶名輸入,顯示兩次驗證。但是,當我使用家庭註冊表單並輸入包含空格的用戶名時,驗證錯誤只顯示一次。有誰知道可能是什麼問題?

+0

沒有您的視圖代碼,不可能說(wat ...'這個網站最適用於Internet Explorer 9或更高版本。) – AD7six

回答

4

通常這是因爲驗證觸發兩次。究竟是什麼導致它被觸發兩次很難說沒有看到更多的代碼(特別是涉及的控制器,組件,行爲和模型)。

檢查您是否可能手動調用Model::validates(),除了由模型保存操作觸發的驗證,或者您甚至可以手動調用它兩次。

它也可能由第三方組件或行爲或任何其他觸發...您需要做一些調試。

3

在我的情況發生,因爲在控制器:

  1. 我做了$this->Model->save()其返回false(第一 驗證)
  2. 然後,以示我做 $this->Model->invalidFields()這再次驗證字段的驗證錯誤 (第二次)並返回消息

要修復它,我更改了$this->Model->invalidFields() to $this->Model->validationErrors以獲取錯誤消息

0

我也有這個問題一次。但是,就我而言,我發現儘管我在模型中編寫了驗證代碼,但我在控制器中再次驗證了它,因爲它顯示了雙驗證錯誤。如果您完成了相同的操作,請從控制器上刪除

$this->Model->validates()