Итак, у меня есть форма cakePHP (2.4.6), и я пытаюсь создать типичную форму регистрации пользователя со вторым полем пароля. Я написал специальное правило, чтобы проверить, совпадают ли значения полей пароля.
В первый раз, когда я отправляю форму, проверка работает, но после одного раза с ошибкой проверки форма снова отказывается отправляться. Кто-нибудь знает, почему? Это происходит с любой формой, которая имеет настраиваемые правила проверки ...
Вот модель для справки:
class User extends AppModel {
var $primaryKey = 'username';
public $validate = array(
'username' => array(
'between' => array(
'rule' => array('between', 8, 20),
'message' => 'Usernames must be 8-20 characters long.',
),
'reg' => array(
'rule' => '/^[\w]{8,20}$/',
'message' => 'Valid characters: a-z, A-Z, 0-9, _'
),
),
'password' => array(
'between' => array(
'rule' => array('between', 8, 20),
'message' => 'Passwords must be 8-20 characters long.',
),
'reg' => array(
'rule' => '/^[\w\.\-]{8,20}$/',
'message' => 'Valid characters: a-z, A-Z, 0-9, _, -, .'
),
),
're_password' => array(
'same' => array(
'rule' => array('same', 'password'),
'message' => 'Passwords do not match!',
)
),
);
public function same($first, $second) {
$val = '';
foreach($first as $k=>$v) {
$val = $v;
}
return $this->data[$this->$second] == $val;
}
}
Контроллер add()
функция:
public function add() {
if ($this->request->is('post')) {
pr($this->request->data);
$this->User->create();
if ($this->User->save($this->request->data)) {
$this->Session->setFlash(__('The user has been saved.'));
return $this->redirect(array('controller'=>'home'));
} else {
$this->Session->setFlash(__('The user could not be saved. Please, try again.'));
}
}
}
Первая отправка работает нормально: первая отправка
Но после того, как я получаю сообщения об ошибках проверки, независимо от того, меняю ли я входные значения так, чтобы они не возникали, нажатие кнопки «Отправить» ничего не делает - страница просто обновляется с любыми значениями в полях ввода, например: после
Ни мгновенного сообщения, ни сообщения об ошибке проверки, ничего. (Извините, без репутации, не могу публиковать изображения ..)
if($this->request->is('post'))
илиif(!empty($this->request->data))
после этого, поместитеdebug($this->request->data)
, посмотрите, что будет на выходе - person hashmode   schedule 27.07.2014