| layout | default |
|---|---|
| title | フォームを表示してみよう |
-
前章までは、ルーティング、レンダリングの簡単な例を示しました。
-
本章では、画面入力のためにフォームを作成します。
-
EC-CUBE 3ではフォームの作成はフォームビルダーを用いて行います。
-
本章では以下を行います。
-
コントローラーからフォームビルダを利用します。
-
フォームビルダーでフォーム要素を構築します。
-
フォームビルダーの概要を説明します。
-
フォームビルダーからフォームビューを作成し、Twigに渡す方法を説明します。
-
Twigで受け取ったフォームビューの表示方法を説明します。
-
-
まずコントローラーにFormを定義します。
-
以下の修正をコントローラーに行います。
- CrudController.php
- Silex(Symfony2)では前述の通り、フォームビルダーでフォーム項目を定義します。
- [フォームビルダー]->add([name属性], [type属性], [オプション])
-
addメソッドの引数の説明を行います。
-
[name属性]
- html上で識別される、フォームの項目名です。
-
[type属性]
- フォーム項目の種類です(text、checkbox、textareaなど)
-
[オプション]は以下の内容を、適宜連想配列で設定します。
- 必須の設定
- 項目の入力必須の設定
- デフォルト値
- value値の初期値
- バリデーション(次章で説明)
- 入力値の精査
- value属性の設定
- ユーザー入力値(hiddenを除く)
- htmlでformに対して指定出来る属性全て
- id、class、placeholderなど、htmlで指定出来るものは全て
-
- 上記のオプション項目に以下が設定されていると思います。
'mapped' => false,
- 上記は後の章でてくるエンティティとフォーム項目を紐付けるかどうかを設定します。
- エンティティを用いない場合は必ずfalseを設定してください。
- 設定がtrueの場合、ビルダーが項目とエンティティのマッピングを行うためエラーとなります。
-
以下のフォーム項目については、通常のhtmlを作成する際と、概念が違います。
-
セレクトボックス
-
チェックボックス
-
ラジオボックス
-
上記に示したものは、選択値をフォームビルダーの設定項目によって設定します。
- 上記の場合は、**addメソッド第二引数の[type属性]**に「choices」を指定し、連想配列を与える事で実現できます。
-
-
フォームビルダーは以下で取得が出来ます。
-
**$app['form.factory']**から以下メソッドを呼び出します。
-
createBuilder([タイプ名称], [エンティティ(データーモデルオブジェクト)], [オプション])
- [タイプ名称] : 次章で説明する「FormType」のメソッドgetNameで定義した名前を指定します。
- あまりおすすめしませんが、FormTypeがなくビルダーのみで生成する際は、「form」を指定してください。
- [エンティティ(データーモデルオブジェクト)] : 通常は内部で利用するエンティティを設定します。
- エンティティを用いない際は、「null」を指定してください。
- [オプション] : フォーム生成時オプションを設定します。
- 使用頻度も少ないため、本チュートリアルでは割愛いたします。
-
-
-
フォームビルダーで項目の定義が完了したら、以下の順で「フォームのビューオブジェクト」生成を行います。
-
フォームの取得
- [フォームビルダー]->getForm();
-
フォームのビューオブジェクト取得
- [フォームオブジェクト]->createView()
-
-
コントローラー側の実装が完了しました。
-
次はTwigに以下修正を加え、フォームのビューオブジェクトをhtmlとして表示出来る様にしましょう。
-
以下の様にcrud_test.twigを修正します。
- crud_test.twig
-
ここで重要なのは以下2行です。
- {{ form_widget(forms._token) }}
- {{ form_widget(forms)}}
-
上記の設定によって、フォームオブジェクトがビューに書きだされます。
- 本当は1項目づつ表示することも可能ですが、本チュートリアルでは全項目を一度に書き出しています。
- forms._tokenは本画面から、サーバーへアクセスした事をサーバーで判断するために、必ず記述します。
- 上記はセキュリティのために行います。
- サーバー側での判断はフォームオブジェクトが自動で行なってくれます。
-
最後に確認のためにブラウザにアクセスしてみましょう。
-
ブラウザのURLに「http://[ドメイン + インストールディレクトリ]/tutorial/crud」を入力してください。
-
フォームビルダーで構築したフォームが表示されています。
-
- コントローラーでFormを定義しました。
- フォームビルダーでフォーム項目を構築しました。
- フォームビルダーからフォームオブジェクト、そこからビューオブジェクトを取得しました。
- フォームのビューオブジェクトをTwigで表示しました。
