Я искал по всему миру, пробовал каждый трюк в книге, но я все еще не могу заставить приложение CakePHP выполнить простую проверку подтверждения пароля. Я попытался создать правило пользовательской проверки следующим образом:
'passwordequal' => array('rule' => 'checkpasswords' , 'message' => 'Passwords Do Not Match')
Затем определены «checkpasswords» следующим образом:
public function checkpasswords(){ if(strcmp($this->data['User']['new_password'],$this->data['User']['confirm_password']) == 0 ) { return true; } return false; }
«new_password» и «confirm_password» – это поля ввода пароля. Это не сработало. Затем я попробовал один, в котором я хэшировал «confirm_password». Это тоже не сработало. У меня есть и другие «правила», которые не проверяются, как «непустые», которые, я считаю, являются одним из стандартных правил CakePHP. Кто-нибудь может помочь. Я знаю, что этот вопрос задавали несколько раз, но ни одно из этих решений не сработало для меня. Документация CakePHP тоже не помогла.
два поля в файле вида
echo $this->Form->input('password'); echo $this->Form->input('repass');
Файл модели
<?php class Post extends AppModel { public $validate = array( 'repass' => array( 'equaltofield' => array( 'rule' => array('equaltofield','password'), 'message' => 'Require the same value to password.', //'allowEmpty' => false, //'required' => false, //'last' => false, // Stop validation after this rule 'on' => 'create', // Limit validation to 'create' or 'update' operations ) ) ); function equaltofield($check,$otherfield) { //get name of field $fname = ''; foreach ($check as $key => $value){ $fname = $key; break; } return $this->data[$this->name][$otherfield] === $this->data[$this->name][$fname]; } }?>
Кажется, что ваша модель не загружается правильно и использует динамически сгенерированную модель.
Сравнение паролей в 2.x – это не что иное, как сравнение любых двух полей в качестве торта, который больше не хэширует pw автоматически.
Можете ли вы подтвердить, что ваш метод проверки запущен, кажется, что это не особенно, если такие простые вещи, как notEmpty
, не работают.