Ошибка правила проверки CakePHP - PullRequest
0 голосов
/ 03 декабря 2011

Я прошёл несколько проверочных функций, написанных, чтобы проверить, существует ли электронная почта пользователя в системе.

Я получаю следующую ошибку

Примечание (8): неопределенное смещение: 0 [CORE / cake / libs / model / model.php, строка 1122]

Это код, который вызывает ошибку

'email' => array(
            'emailRule-1' => array(
                'rule' => 'email',
                'message' => 'email format is incorrect',
                'last' => true
            ),
            'emailRule-2' => array(
                'rule' => 'checkEmailExist',
                'message' => 'email already exists in the system'
            )
        ),

И, как правило, за ошибку отвечает 2, а вот правило 2:

function checkEmailExist($emailAddress, $user_id){
       $this->recursive = -1;
       if($user_id > 0){
           $user = $this->read(array('email'), $user_id);

           if($emailAddress == $user['User']['email'])
              return true;
       }


       $result = $this->find('count', array('conditions' => array('User.email' => $emailAddress)));
       return $result > 0 ? false : true;
    }

Ответы [ 2 ]

1 голос
/ 04 декабря 2011

Почему бы не сделать это так?

public $validate = array(
    'email' => array(
        'rule' => array('email', 'isUnique')
    )
);

Возможно, вы захотите разделить его на два отдельных правила, чтобы применить свои собственные сообщения об ошибках, но это должно работать просто отлично.

0 голосов
/ 04 декабря 2011

Вы пытались отладить содержимое $ emailAddress?Могу поспорить, что это массив ^^

function checkEmailExist($emailAddress, $user_id){
   $this->recursive = -1;
   $email = array_shift(emailAddress);
   ...

, вам нужно сначала получить дочерний элемент

, поэтому помните: всегда хорошая идея использовать debug () или pr () для отладки вашегоСначала переменные.

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