Php 自定义验证规则失败一次后表单未提交

Php 自定义验证规则失败一次后表单未提交,php,forms,validation,cakephp,cakephp-2.4,Php,Forms,Validation,Cakephp,Cakephp 2.4,因此,我有一个cakePHP(2.4.6)表单,我正在尝试制作一个典型的用户注册表单,其中包含第二个密码字段。我编写了一个自定义规则来检查密码字段的值是否匹配 我第一次提交表单时,验证工作正常,但在一次验证失败后,表单拒绝再次提交。有人知道为什么吗?任何具有自定义验证规则的表单都会发生这种情况 以下是供参考的模型: class User extends AppModel { var $primaryKey = 'username'; public $validate = arr

因此,我有一个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.'));
        }
    }
}
第一次提交的作品很好:

但在我得到验证错误后,无论我是否将输入值更改为无错误,单击submit都不会执行任何操作-页面只会刷新输入字段中的任何值,如下所示:

没有闪存消息,没有验证错误消息,什么都没有。
(很抱歉,没有声誉,无法发布图片.)

将您的帖子替换为帖子,如

    public function add() {
    if ($this->request->is(array('post','put'))) {
        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.'));
        }
    }
}

你说的“拒绝提交”是指。。。?您的浏览器不发送任何数据,或者到底是什么问题?还是你收到了错误?你的观点是什么?生成的HTML是什么样子的?到目前为止,您尝试了什么来调试这个问题?ps,请始终提及您的确切CakePHP版本,并相应地标记您的问题!尝试调试表单提交的结果,在您的控制器中,当您检查
if($this->request->is('post'))
if(!empty($this->request->data))
之后,放入
debug($this->request->data)
,查看输出结果控制器中实际有哪些代码?也许就我们所知,它提交得很好。@hashmode-第一个调试可以工作,第二个也没有出现…@Dave-函数非常基本,没有做太多更改。还是把它加到问题上了。