2013-08-02 3 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 не работает.
Дополнение i меняет текст поля 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

Да, правило ('email', true) работает хорошо:/ – kicaj

+0

Проверьте журнал sql - Если нет запроса для выбора 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!')), 

Я думаю, что была бы другая ошибка!

Смежные вопросы