В моей модели 'Members' я сравниваю, совпадает ли password
с password_confirm
с помощью этой пользовательской пары ключ / функция проверки.
...'password_confirm' => array(
'compare' => array(
'rule' => array('validate_passwords'),
'message' => 'The passwords you entered do not match.',
'required' => true
),
'length' => array(
'rule' => array('between', 6, 20),
'message' => 'Your password must be between 6 and 20 characters.',
),
'empty' => array(
'rule' => 'notEmpty',
'message' => 'The password field must not be left blank.',
),
)...
function validate_passwords ...
function validate_passwords($data, $password_field = 'password', $hashed = true) {
$password = $this->data['Member']['password'];
$password_confirm = $hashed ?
Security::hash($data['password_confirm'], null, true) :
$data['password_confirm'];
return $password === $password_confirm;
}
У меня есть много разных разделов моего сайта, которые позволяют редактировать участников.Некоторые разделы позволяют изменять пароли, а другие просто позволяют участникам редактировать свою биографию.
Однако, поскольку в форме нет поля password_confirm
в форме, где пользователи редактируют свою биографию (например), проверку всегда возвращает false в любой форме, кроме форм, в которых присутствует password_confirm
.
Существует ли эффективный способ проверки таким образом ...
"Сравнить пароль только с password_confirm толькоесли ключ password_confirm
существует в массиве $data
"
Я не смог бы найти его нигде на SO, надеюсь, я не повторяю существующий вопрос.
Спасибо!
Примечание.Я хочу убедиться, что поле не оставлено пустым, если оно существует в форме.