2013-08-02 21 views
0

我準備一些登記表(簡單),並在我的模型我準備了一些驗證電子郵件字段:CakePHP的isUnique設置不起作用

'email' => array(
    'mail' => array( 
     'rule' => array('email', true), 
     'required' => false, 
     'message' => 'Not correct e-mail!'), 
    'unique' => array( 
     'rule' => 'isUnique', 
     'message' => 'E-mail was registered!')) 

但規則isUnique設置不起作用。
除了我在MySQL領域的電子郵件更改爲獨特的,但仍然無法正常工作。
我使用CakePHP 2.3.7


問題是,當我們使用翻譯與模型的行爲。

查詢:

SELECT COUNT(DISTINCT(`User`.`id`)) AS count FROM `sometable`.`users` AS `User` INNER JOIN `sometable`.`i18n` AS `I18nModel` ON (`User`.`id` = `I18nModel`.`foreign_key` AND `I18nModel`.`model` = 'User' AND `I18nModel`.`locale` = 'pl') WHERE `User`.`email` = '[email protected]' 

現場電子郵件未翻譯。

+0

isUnique設置始終是有效的,即使郵件被註冊 – kicaj

+0

是,規則(「電子郵件」,真)做工不錯:/ – kicaj

+0

檢查SQL日誌 - 如果從用戶的SELECT COUNT(*)沒有查詢其中email =「你輸入的文本」 - 很可能規則沒有被正確定義。 – AD7six

回答

1

試試這個。

array(
    'email' => array(
     'notEmpty' => array(
      'rule' => 'notEmpty', 
      'message' => 'Provide an email address' 
     ), 
     'validEmailRule' => array(
      'rule' => array('email'), 
      'message' => 'Invalid email address' 
     ), 
     'uniqueEmailRule' => array(
      'rule' => 'isUnique', 
      'message' => 'Email already registered' 
     ) 
    ) 
); 
+0

有什麼區別? – kicaj

+0

不要忘記last => true,因爲這些是連續的驗證規則。 – mark

1

我複製你的代碼並粘貼到我的模型中,它只是工作正常!我不認爲它有任何錯誤。我在你的代碼後面加了分號。這裏是我已經檢查了代碼:

'email' => array(
      'mail' => array(
       'rule' => array('email', true), 
       'required' => false, 
       'message' => 'Not correct e-mail!'), 
      'unique' => array(
       'rule' => 'isUnique', 
       'message' => 'E-mail was registered!')), 

我認爲會有一些其他的錯誤!