код cakephp не работает для буквенно-цифровой проверки

мы пробовали несколько решений для проверки пароля, но ни одно из них не работает, но пользователь получает логин, все проверки работают, кроме буквенно-цифровой проверки в пароле.

Вот код:

'password' => array ('required' => array (

    'rule' => array ('notEmpty'),
    'rule' => array ('between',1,15 ),

    //'rule'    => array('custom', '[a-zA-Z0-9, ]+'),
    'message' => 'A password is required,must be between 8 to 15 characters' )
), 

используя пользовательскую функцию, она не работает, поэтому мы попробовали

'alphaNumeric' => array(
    'rule'     => array('alphaNumericDashUnderscore'),
    'rule'     => 'alphaNumeric',
    'required' => true,
    'message'  => 'password must contain Alphabets and numbers only'
)),

пользовательская функция в модели

public function alphaNumericDashUnderscore($check) {
    $value = array_values($check);
    $value = $value[0];

    return preg_match('|^[0-9a-zA-Z_-]*$|', $value);
}

мы работаем над версией cakephp 2.4.3


person dipanshu    schedule 13.12.2013    source источник


Ответы (1)


Это потому, что вы дважды определяете один и тот же ключ rule в массиве. Второй всегда перезапишет первый.

Согласно документации, вы следует сделать это следующим образом:

public $validate = array(
    'password' => array(
        'password-1' => array(
            'rule'    => 'alphaNumeric',
            'message' => 'password must contain Alphabets and numbers only',
         ),
        'password-2' => array(
            'rule'    => 'alphaNumericDashUnderscore',
            'message' => 'password must contain Alphabets and numbers only'
        )
    )
);
person noslone    schedule 13.12.2013