【问题标题】:Form not submitting after failing custom validation rule once自定义验证规则失败一次后表单未提交
【发布时间】:2014-09-18 06:04:06
【问题描述】:

所以我有一个 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.'));
        }
    }
}

第一次提交工作正常: first submission

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

没有闪烁消息,没有验证错误消息,什么都没有。 (抱歉,没有名气,不能发图..)

【问题讨论】:

  • 拒绝提交”你的意思是......?您的浏览器不发送任何数据或究竟是什么问题?还是您收到错误?你的观点是什么样的?生成的 HTML 是什么样的?到目前为止,您尝试过什么来调试问题? ps,请始终提及您的确切 CakePHP 版本并相应地标记您的问题!
  • 尝试调试表单提交的结果,在你的控制器中,当你检查if($this->request->is('post'))if(!empty($this->request->data))之后,输入debug($this->request->data),看看输出是什么
  • Controller中实际有什么代码?就我们所知,也许它提交得很好。
  • @hashmode - 第一个调试有效,第二个也没有出现...
  • @Dave - 功能很基础,没有做太多改动。无论如何将其添加到问题中。

标签: php forms validation cakephp cakephp-2.4


【解决方案1】:

把你的帖子换成帖子,点赞

    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.'));
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 2020-07-02
    • 2019-12-23
    • 2019-11-21
    • 1970-01-01
    • 2013-09-29
    相关资源
    最近更新 更多