質問: フォーム(index.php)で、入力項目のバリデーションに引っかかった場合は エラーメッセージ表示と共に入力した値が入った状態でフォームに戻るのですが、 入力項目のバリデーションは通り、それ以降の処理 (例えばメールの送信や、ファイルのアップデート、値のDBへの保存)でエラーが出て、完了ページに遷移出来なかった場合には ``` $this->Session->setflash('何らかのエラーが発生しました'); $this->redirect(array('controller' => 'hoges', 'action' => 'index')); ``` のようにしてフォームにリダイレクトしています。 その際、入力した値がすべてクリアされてしまうため、POSTされてきた値をフォームに入れておきたいのですがどのようにすればよいでしょうか? ちなみに全てがエラー無く通った場合は、`$this->render('finish');`で完了ページを表示させています。 出来ましたら、値を保持の方法と一緒に、それをView側に表示させるのかの記述も教えて頂けませんでしょうか。 何卒よろしくお願い致します。 ``` Form->input('title', array('type'=>'text', 'placeholder'=>'入力して下さい', 'div'=>false, 'id'=>false, 'label'=>false, 'required'=>false, 'error'=>false)); ?> Form->input('content', array('type'=>'text', 'placeholder'=>'入力して下さい', 'div'=>false, 'id'=>false, 'label'=>false, 'required'=>false, 'error'=>false)); ?> ```
回答: わざわざredirectしなくていいですよ。 setFlashを使っているなら、redirect部分を削除して、正常に処理する部分はスキップさせて、普通にフォームをrenderさせれば、エラーメッセージと共に値が入ったままになりませんか? FormHelperは`$this->request->data`を勝手につかってくれるはずてす。