Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
Symfonyの
Formあれこれ
Symfony 勉強会 #9

岡田祐一 @okapon_pon
自己紹介
• 名前:岡田祐一 (@okapon_pon)
• 所属:株式会社クロコス エンジニア
• 2013年∼ 日本Symfonyユーザー会
• Symfony歴 2年ほど
私とSymfony
• 2011年 7月 Symfony2.0 リリース そして出会う
• 2011年 9月 Symfony作業場(翻訳会)に参加
• 2011年 12月 Symfony勉強会#5の前夜祭に参加
• 2012年 6月 Symfo...
前回のワークショップ
Symfony勉強会 #8



サンプルコード (ver. Symfony2.2)
https://github.com/okapon/symfony-
workshop/wiki
今日のお話
フォーム(Form)
内容
• Symfony Formの特徴
• Formあれこれ (Tips)
Symfony Form 特徴
• 高度な抽象化
• さまざまな FormType
• プレゼンテーションレイヤーの分離
• DIへの統合
• Validationの組み込み
柔軟なモデルバインディング
• モデルに依存しないデータバインディング
• プレゼンテーション層とドメイン層の分離
Data Transformers
• Entity Valueへ変換
• プレゼンテーション層とドメイン層の分離
拡張性
• FormExtension
• Symfony DIでうまく統合
イベント駆動
• EventDispatcherを内包
• 動的にフォームを組立可能
!
各種イベント
• PRE_SET_DATA
• POST_SUBMIT
など
Formあれこれ(Tips)
このフォームどう実装したらいいの?
Twigでformの値を得るには?
規約への同意を確認したい
例)利用規約への同意確認
規約への同意を確認したい
• フォームにagreementというcheckboxフィールドを
定義
• mapped オプションfalseでデータオブジェクトには

マッピングしない
規約への同意を確認したい
• バリデーションを行うコールバック関数を
EventListenerに登録
※ FormEventsやFormErrorなどのクラス
をインポートする必要がある
カスタムFormFieldType
• 再利用可能にする
カスタムFormFieldType
定義
!
利用 alias指定
Delete機能でCSRF対策
例) 記事情報を削除する機能
Formの CSRF Protection 機能を使って
CSRF対策を行う!
 記事情報をDBから削除するAction
Delete機能でCSRF対策
CSRF対策
Twig関数化しとくと便利
テンプレート側
!
!
loopの中で出したい場合
deleteでCSRF対策
20
Twig で使える Form変数
21
各種フォーム変数へは、
form.フィールド名.vars.変数名
でアクセスできる
先ほどのCSRFの例では form._token.vars.value
• value: フィールドにセットされている値
• label: labelに表示される値
• id: HTMLに表示される際のid属性
• required: required属性
など
Twigで使える Form変数
22
その他フォーム...
Twigで使える Form変数
23
required属性がついているlabelタグには自動で
*印をつけたい!
(応用編)カスタムテンプレート化
Formのカスタムテンプレート
24
作成の詳しい方法はこちら
http://docs.symfony.gr.jp/symfony2/cookbook/
form/form_customization.html
画像を選択させたい
例)ECサイトで商品を選択させたい
 Twigでつかう変数を工夫する!!
Delete機能でCSRF対策
画像を選択させたい
FormType側
画像を選択させたい
テンプレート側
• form.itemに forでアクセス(選択項目のFormViewを取り
出す)
• form_widget(item)を使って必要なradio boxを表示する
• item.vars.labelには ...
まとめ
!
• Formはモデルに依存せず柔軟にマッピングで
きる
• 拡張性が提供されている
• FormViewが分かれば色々できるようになる!
ご清聴ありがとうございました
Próxima SlideShare
Cargando en…5
×

Symfony勉強会#9 form

4.466 visualizaciones

Publicado el

Symfony勉強会#9で発表したスライド公開しました。余分なスライドを削除したなど一部改変もありますがなるべくそのままの状態でアップしました。

  • Inicia sesión para ver los comentarios

Symfony勉強会#9 form

  1. 1. Symfonyの Formあれこれ Symfony 勉強会 #9
 岡田祐一 @okapon_pon
  2. 2. 自己紹介 • 名前:岡田祐一 (@okapon_pon) • 所属:株式会社クロコス エンジニア • 2013年∼ 日本Symfonyユーザー会 • Symfony歴 2年ほど
  3. 3. 私とSymfony • 2011年 7月 Symfony2.0 リリース そして出会う • 2011年 9月 Symfony作業場(翻訳会)に参加 • 2011年 12月 Symfony勉強会#5の前夜祭に参加 • 2012年 6月 Symfony勉強会 #6 スタッフとして参加 • 2012年 10月 Symfony温泉 (ドキュメント翻訳) • 2013年 5月 Symfony勉強会 #8 ワークショップ講師 • 2013年 11月 Symfony作業場(翻訳会)
  4. 4. 前回のワークショップ Symfony勉強会 #8
 
 サンプルコード (ver. Symfony2.2) https://github.com/okapon/symfony- workshop/wiki
  5. 5. 今日のお話 フォーム(Form)
  6. 6. 内容 • Symfony Formの特徴 • Formあれこれ (Tips)
  7. 7. Symfony Form 特徴 • 高度な抽象化 • さまざまな FormType • プレゼンテーションレイヤーの分離 • DIへの統合 • Validationの組み込み
  8. 8. 柔軟なモデルバインディング • モデルに依存しないデータバインディング • プレゼンテーション層とドメイン層の分離
  9. 9. Data Transformers • Entity Valueへ変換 • プレゼンテーション層とドメイン層の分離
  10. 10. 拡張性 • FormExtension • Symfony DIでうまく統合
  11. 11. イベント駆動 • EventDispatcherを内包 • 動的にフォームを組立可能 ! 各種イベント • PRE_SET_DATA • POST_SUBMIT など
  12. 12. Formあれこれ(Tips) このフォームどう実装したらいいの? Twigでformの値を得るには?
  13. 13. 規約への同意を確認したい 例)利用規約への同意確認
  14. 14. 規約への同意を確認したい • フォームにagreementというcheckboxフィールドを 定義 • mapped オプションfalseでデータオブジェクトには
 マッピングしない
  15. 15. 規約への同意を確認したい • バリデーションを行うコールバック関数を EventListenerに登録 ※ FormEventsやFormErrorなどのクラス をインポートする必要がある
  16. 16. カスタムFormFieldType • 再利用可能にする
  17. 17. カスタムFormFieldType 定義 ! 利用 alias指定
  18. 18. Delete機能でCSRF対策 例) 記事情報を削除する機能 Formの CSRF Protection 機能を使って CSRF対策を行う!
  19. 19.  記事情報をDBから削除するAction Delete機能でCSRF対策 CSRF対策
  20. 20. Twig関数化しとくと便利 テンプレート側 ! ! loopの中で出したい場合 deleteでCSRF対策 20
  21. 21. Twig で使える Form変数 21 各種フォーム変数へは、 form.フィールド名.vars.変数名 でアクセスできる 先ほどのCSRFの例では form._token.vars.value
  22. 22. • value: フィールドにセットされている値 • label: labelに表示される値 • id: HTMLに表示される際のid属性 • required: required属性 など Twigで使える Form変数 22 その他フォーム変数はこちら http://symfony.com/doc/current/reference/forms/ twig_reference.html#twig-reference-form-variables
  23. 23. Twigで使える Form変数 23 required属性がついているlabelタグには自動で *印をつけたい! (応用編)カスタムテンプレート化
  24. 24. Formのカスタムテンプレート 24 作成の詳しい方法はこちら http://docs.symfony.gr.jp/symfony2/cookbook/ form/form_customization.html
  25. 25. 画像を選択させたい 例)ECサイトで商品を選択させたい
  26. 26.  Twigでつかう変数を工夫する!! Delete機能でCSRF対策
  27. 27. 画像を選択させたい FormType側
  28. 28. 画像を選択させたい テンプレート側 • form.itemに forでアクセス(選択項目のFormViewを取り 出す) • form_widget(item)を使って必要なradio boxを表示する • item.vars.labelには Itemインスタンスが入ってます
  29. 29. まとめ ! • Formはモデルに依存せず柔軟にマッピングで きる • 拡張性が提供されている • FormViewが分かれば色々できるようになる!
  30. 30. ご清聴ありがとうございました

×