symfonyTweetこんばんは。新しくパソコン(MacBookPro)を新調しました。インテル製のSSDも入れ変えて快適生活に浸かっています。今回はsymfonyのFormで確認画面を挟んだシンプルな流れのシステムの作り方です。最初にsymfonyを始める方のためにもまとめてみたいと思います。流れで処理を行うことです。入力画面で情報を入力し、確認画面で入力内容を確認し、完了画面を表示する流れをsymfonyのFormを使って作成していきます。サンプル用に作成するスキーマ情報は下記のような感じで作成しました。}登録フォームのオブジェクトを最低限で編集します。}}次に入力フォームのアクションを作成します。}作成して実行すると下記のようなイメージになります。※jobeetのデザインを使わせてもらいました。次に確認画面のアクション(confirm)を実装します。入力内容をFromにbindしないといけません。}ここで注目すべきは「$this->processForm」です。「$this->processForm」は確認画面と登録処理実行を分けて行うメソッドとして作成したものです。送られてきた値をセッションに保存します。登録処理実行の場合:第2引数にセッションに保存した入力値のデータ配列を渡し、Formへbindしてsaveを行います。実際には下記のように実装します。}確認画面のテンプレートを用意します。確認内容の場合はフォームの入力値ではなく、セットされたモデルのオブジェクトを利用しています。</table></form>実際に表示すると。登録処理部分の実装します。※createアクションは表示するテンプレートはありません。登録成功:完了画面へリダイレクトする。登録失敗:入力フォームを表示する。}最後に完了画面のアクションとテンプレートを作って完成です。長くなってしまいましたが、コツとしてはprocessFormメソッドで処理をまとめることと、セッションに保存する値はフォームの入力値を保存することです。※間違えてもセッションにFormオブジェクトは保存しないようにしましょう。同じような「入力フォーム→確認ページ→完了ページ」の流れをより簡単に作成できるようになります。$form->getObject();sfFormはエスケープ対象にならないので、テンプレート内でFormオブジェクトからgetObjectするとエスケープされず、XSS脆弱性になります。Action側でテンプレート側に渡すようにしましょう。$this->form->getObject();詳しい内容については下記をご覧くださいませ。byスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。