0

js-plugin DataTables に問題があります。それを機能させるために、Chris Nizzardini の DataTableComponent を実装しました: https://github.com/cnizzdotcom/cakephp-datatable

それは完全にうまくいきます。しかし、そのDataTableを含むページにフォームを保存したい場合、Cakeはデータベースエラーをスローします.フィールドの整合性制約違反はnullにすることはできません.

私が知っているのは次のとおりです。フォームの検証は、コントローラーで次の行のときに正常に機能します

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

私の質問: データベース エラーが消えるように、コンポーネントを介してリクエストをルーティングし、そのデータをフェッチした後に実行する可能性はありますか? ありがとうございます。

4

1 に答える 1

0

解決策は、getResponse() ではなく getResponse(model, action) を使用することです。最初のものはそのプラグインのコードごとに壊れているため、2 番目のものを使用する必要があります。開発者はそれを修正する必要があります。

于 2013-06-03T17:54:11.307 に答える