CakePHP - Модели (Пользовательская проверка электронной почты) - PullRequest
1 голос
/ 15 октября 2011

У меня есть следующая пользовательская функция, которая проверяет, есть ли у электронной почты учетная запись gmail.com ...

  function check_email($mail) {  
list($user, $domain) = explode('@', $mail);


if ($domain !== 'gmail.com' ){
return false;

} else{
    return true; 
    } }

В моих моделях я хочу проверить, вернул ли он значение true, а если нет, то выдает сообщение об ошибке. Вот что я получил (раздел массива var $ validate =):

'email' => array(
          'emailvalid' => array('check_email' => 'email',
      'message' => 'Not a valid email address') 
           )

Я получаю сообщение об ошибке, даже когда я использую учетную запись gmail.com ... Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 15 октября 2011

Похоже, вам не хватает поля rule в вашем массиве $ validate.Кроме того, значение, переданное методу проверки, на самом деле является массивом, а не строкой.Проверьте синтаксис для пользовательских правил проверки здесь .

Попробуйте что-то вроде этого:

var $validate = array(
   'email' => array(
        'rule'    => array('checkEmail'),
        'message' => 'Not a valid email address.' 
    )
);

function checkEmail($value) {
    list($user, $domain) = explode('@', $value['email'], 2);
    return $domain === 'gmail.com';
}
0 голосов
/ 15 октября 2011

Вы пытались использовать отличные инструменты отладки тортов?как pr () или debug () или простой print_r ()?тогда вы обнаружите такую ​​простую ошибку самостоятельно менее чем за секунды.

в вашем случае $ mail будет содержать массив и поэтому не подходит для прямого сравнения

, поэтому оно должно быть больше похоже на

function check_email($data) { 
    $mail = array_shift($data);
    ....
}

также ваш массив проверки мне кажется немного странным.см. кулинарную книгу о том, как правильно настроить пользовательские правила.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...