Как сохранить пользователей в приложении 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; }