【问题标题】:Cake PHP DataTable Component destroys Form validationCake PHP DataTable 组件破坏表单验证
【发布时间】:2013-05-30 16:50:46
【问题描述】:

js-plugin DataTables 存在问题。为了让它工作,我实现了 Chris Nizzardini 的 DataTableComponent:https://github.com/cnizzdotcom/cakephp-datatable

这完全没问题。但是当我想在包含该 DataTable 的页面上保存一个表单时,Cake 会抛出一个数据库错误,字段的完整性约束违规不能为空。

我只知道: 在控制器中,表单验证工作正常

public $components = array('RequestHandler', 'Session', 'DataTable');

改为那一行:

public $components = array('RequestHandler', 'Session');

我可以在不消除错误的情况下更改控制器中的代码,因此我假设在组件中省略了验证。

控制器代码:

if (!$this->request->isPost()) {
            $this->paginate = array(
                'fields' => array('Post.id', 'Post.B/S', 'Post.H', 'Post.DATE', 'Post.TIME', 'Post.INCOME', 'Post.CART'),
                'conditions' => array('OR' =>
                    array(
                       array('AND' => array(    
                                      array('Post.ZIPCODE LIKE' => $userArea . '%'),
                                      array('Post.ALTDATE >' => date("Y-m-d")),
                                      array('Post.AGENT' => '0'),
                                      array('Post.OWNER <>' => $this->UserAuth->getUserId()),
                                      array('Post.PARENTID' => '0'),
                                      array('Post.ACCEPTED' => '0')
                                )),
                        array('AND' => array(
                                      array('Post.ZIPCODE' => $userArea . '%'),
                                      array('Post.ALTDATE' => date("Y-m-d")),
                                      array('Post.TIME >' => date("H:i")),
                                      array('Post.AGENT' => '0'),
                                      array('Post.OWNER <>' => $this->UserAuth->getUserId()),
                                      array('Post.PARENTID' => '0'),
                                      array('Post.ACCEPTED' => '0')
                                )),
                        array('AND' => array(   
                                      array('Post.DELIVERYAREA LIKE' => $userArea . '%'),
                                      array('Post.ALTDATE >' => date("Y-m-d")),
                                      array('Post.AGENT' => '0'),
                                      array('Post.OWNER <>' => $this->UserAuth->getUserId()),
                                      array('Post.PARENTID' => '0'),
                                      array('Post.ACCEPTED' => '0')
                                )),
                        array('AND' => array(
                                      array('Post.DELIVERYAREA' => $userArea . '%'),
                                      array('Post.ALTDATE' => date("Y-m-d")),
                                      array('Post.TIME >' => date("H:i")),
                                      array('Post.AGENT' => '0'),
                                      array('Post.OWNER <>' => $this->UserAuth->getUserId()),
                                      array('Post.PARENTID' => '0'),
                                      array('Post.ACCEPTED' => '0')
                                )),
                    )
                )
            );
            $response = $this->DataTable->getResponse();
            $this->set('response', $response);
            $this->set('_serialize','response');
            $response['oLanguage'] = array('sUrl' => 'language/dataTables.german.txt');
        };

我的问题:是否有可能通过组件路由请求并在获取该数据后运行它以使数据库错误消失?谢谢你们。

【问题讨论】:

    标签: database validation cakephp controller components


    【解决方案1】:

    解决方案是不使用 getResponse() 而是使用 getResponse(model, action)。必须使用第二个,因为该插件中的每个代码都破坏了第一个。开发者必须解决这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-22
      相关资源
      最近更新 更多