0

私のコントローラーには、この追加機能があります:

public function add(){
    $this->layout = false;
    if($this->request->is('post')){
        $this->Paciente->create(); 
        $this->Paciente->set($this->request->data);
        if ($this->Paciente->validates()) {
            if($this->Paciente->save()){
                 $this->set('status', '200');
            } else {
             //   debug($this->Paciente->validationErrors);
             //   ini_set('memory_limit', '-1');
         //       var_dump($this->Paciente);

                $this->set('status', '101');
            //    $log = $this->Paciente->getDataSource()->getLog(false, false);
          //      debug($log);

               // die;
             }
        } else {
            // didn't validate logic
   //         $errors = $this->Paciente->validationErrors;
     //       debug($errors);
            $this->set('status', '100');

        }

    } else

     $this->set('status', '404');

}

投稿情報を送信していますが、ステータスは常に 101 です。ご覧のとおり、エラーの場所を突き止めるために多くのことを試みましたが、うまくいきませんでした。

また、モデルにコールバックがありません(beforeSave、afterSave ...)...

誰が何が起こっているのか知っていますか?

4

3 に答える 3

0

君の

if ($this->Paciente->validates()) {
        if($this->Paciente->save()) {
}

間違っている。2回検証しています。

文書化されているように、 false ( save(null, false)) を使用して 2 回無効化しないようにするか、ここで validates() 部分を単純に削除してください。あなたは直接行うことができます:

if ($this->Paciente->save($this->request->data)) {}

ただし、これ自体が問題を引き起こしている可能性は低いです。または、2 番目の (そして誤った) トリガーでフィールドを無効にするカスタム検証ルールがありますか? $this->Paciente->validationErrors後で確認することで確認できます。空である必要があります。保存されない場合 (そして確かにコールバックがない場合)、SQL エラーが原因で例外がスローされない場合は、検証ルールである可能性が最も高くなります。

于 2013-07-13T10:25:51.130 に答える
0

想像できません。上記のように配列の値を設定すると、php5.3 で壊れる可能性があります >

于 2013-11-05T16:37:54.880 に答える