Intereting Posts
PHP #region для сгибания кода? Проверка языка браузера на PHP? Как сделать глобальные вспомогательные функции в laravel 5? Сохранение изменений в SlickGrid с помощью php сохранение параметров URL во время разбивки на страницы Что такое переадресация вызовов и статические вызовы в PHP или в противном случае поздняя статическая привязка? Как сохранить данные с помощью сеансовой службы Symfony2 во время функционального теста? как остановить curl php от отправки заголовка accept Как полностью загружать звук перед воспроизведением? преобразование XML-ответа SOAP в объект или массив PHP Недопустимое разрешение команды php exec () Перенаправление на главную страницу после ошибки 404 в PHP Как сохранить значения формы после сообщения 64-разрядная версия Linux / Ubuntu и openssl (не удалось прочитать символы: Плохое значение) Как взять SMS и позвонить, чтобы предупредить кого-то, исходя из того, что говорит СМС?

CakePHP: Редактировать пользователей без изменения пароля

Как сохранить пользователей в приложении CakePHP, не требуя, чтобы они каждый раз меняли свой пароль?

У меня есть код для проверки двух полей пароля и применения некоторых правил проверки, которые отлично подходят для регистрации и изменения паролей в представлении «редактировать». Однако, как я могу пропустить правила проверки и сохранить пароль, если поля пароля остаются пустыми в окне редактирования? Очевидно, я не хочу пропустить это требование при регистрации.

register.ctp и edit.ctp:

echo $form->create('User'); echo $form->input('username'); echo $form->input('pwd'); echo $form->input('pwd_repeat'); echo $form->end('Submit'); 

Правила проверки User.ctp:

 'pwd' => array( 'length' => array( 'rule' => array('between', 8, 40), 'message' => 'Your password must be between 8 and 40 characters.', ), ), 'pwd_repeat' => array( 'length' => array( 'rule' => array('between', 8, 40), 'message' => 'Your password must be between 8 and 40 characters.', ), 'compare' => array( 'rule' => array('validate_passwords'), 'message' => 'The passwords you entered do not match.', ), ), 

и логику User.ctp перед сохранением:

 public function validate_passwords() { //password match check return $this->data[$this->alias]['pwd'] === $this->data[$this->alias]['pwd_repeat']; } public function beforeSave($options = array()) { //set alias to real thing and hash password $this->data['User']['password'] = $this->data[$this->alias]['pwd']; $this->data['User']['password'] = AuthComponent::password($this->data['User']['password']); return true; }