Enviar pesquisa
Carregar
Symfony勉強会#9 form
•
3 gostaram
•
4,836 visualizações
Yuichi Okada
Seguir
Symfony勉強会#9で発表したスライド公開しました。余分なスライドを削除したなど一部改変もありますがなるべくそのままの状態でアップしました。
Leia menos
Leia mais
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 30
Baixar agora
Baixar para ler offline
Recomendados
EventListener使いこなし術 - Symfony勉強会#10
EventListener使いこなし術 - Symfony勉強会#10
Yuichi Okada
第4回Symfony2勉強会 基礎編ワークショップ.0
第4回Symfony2勉強会 基礎編ワークショップ.0
Yusuke Ueno
composerの遅さをまじめに考える #phpstudy
composerの遅さをまじめに考える #phpstudy
Hiraku Nakano
Composer並列化プラグイン #phpblt
Composer並列化プラグイン #phpblt
Hiraku Nakano
EC-CUBE次期バージョンから、しっかり学ぶ Symfony
EC-CUBE次期バージョンから、しっかり学ぶ Symfony
Kentaro Ohkouchi
Symfony 2.5について
Symfony 2.5について
Issei Murasawa
Symfony Deployment with Capifony #symfony_ja
Symfony Deployment with Capifony #symfony_ja
Tak Nishikori
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
Hiroshi Tokumaru
Recomendados
EventListener使いこなし術 - Symfony勉強会#10
EventListener使いこなし術 - Symfony勉強会#10
Yuichi Okada
第4回Symfony2勉強会 基礎編ワークショップ.0
第4回Symfony2勉強会 基礎編ワークショップ.0
Yusuke Ueno
composerの遅さをまじめに考える #phpstudy
composerの遅さをまじめに考える #phpstudy
Hiraku Nakano
Composer並列化プラグイン #phpblt
Composer並列化プラグイン #phpblt
Hiraku Nakano
EC-CUBE次期バージョンから、しっかり学ぶ Symfony
EC-CUBE次期バージョンから、しっかり学ぶ Symfony
Kentaro Ohkouchi
Symfony 2.5について
Symfony 2.5について
Issei Murasawa
Symfony Deployment with Capifony #symfony_ja
Symfony Deployment with Capifony #symfony_ja
Tak Nishikori
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
Hiroshi Tokumaru
Symfony2 workshop-1
Symfony2 workshop-1
Hidenori Goto
Symfony updates
Symfony updates
Katsuhiro Ogawa
Symfony 1.4 TIPS from Openpne Source Code
Symfony 1.4 TIPS from Openpne Source Code
Hidenori Goto
Introduction of symfony development process & What's symfony 1.3?
Introduction of symfony development process & What's symfony 1.3?
Kousuke Ebihara
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
Hidenori Goto
Symfony2 introduction
Symfony2 introduction
Hidenori Goto
日本Symfonyユーザ会によるSymfony2 ワークショップ
日本Symfonyユーザ会によるSymfony2 ワークショップ
Shin Ohno
Using Symfony Templating On Symfony 1
Using Symfony Templating On Symfony 1
Kousuke Ebihara
Doctrine2 odm-workshop-1
Doctrine2 odm-workshop-1
Hidenori Goto
Guiなテスト環境
Guiなテスト環境
Shingo Nakamura
Symfony2 intro-20111204
Symfony2 intro-20111204
Hidenori Goto
Symfony事例紹介
Symfony事例紹介
Daichi Kamemoto
Mais conteúdo relacionado
Semelhante a Symfony勉強会#9 form
Symfony2 workshop-1
Symfony2 workshop-1
Hidenori Goto
Symfony updates
Symfony updates
Katsuhiro Ogawa
Symfony 1.4 TIPS from Openpne Source Code
Symfony 1.4 TIPS from Openpne Source Code
Hidenori Goto
Introduction of symfony development process & What's symfony 1.3?
Introduction of symfony development process & What's symfony 1.3?
Kousuke Ebihara
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
Hidenori Goto
Symfony2 introduction
Symfony2 introduction
Hidenori Goto
日本Symfonyユーザ会によるSymfony2 ワークショップ
日本Symfonyユーザ会によるSymfony2 ワークショップ
Shin Ohno
Using Symfony Templating On Symfony 1
Using Symfony Templating On Symfony 1
Kousuke Ebihara
Doctrine2 odm-workshop-1
Doctrine2 odm-workshop-1
Hidenori Goto
Guiなテスト環境
Guiなテスト環境
Shingo Nakamura
Symfony2 intro-20111204
Symfony2 intro-20111204
Hidenori Goto
Symfony事例紹介
Symfony事例紹介
Daichi Kamemoto
Semelhante a Symfony勉強会#9 form
(12)
Symfony2 workshop-1
Symfony2 workshop-1
Symfony updates
Symfony updates
Symfony 1.4 TIPS from Openpne Source Code
Symfony 1.4 TIPS from Openpne Source Code
Introduction of symfony development process & What's symfony 1.3?
Introduction of symfony development process & What's symfony 1.3?
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 introduction
Symfony2 introduction
日本Symfonyユーザ会によるSymfony2 ワークショップ
日本Symfonyユーザ会によるSymfony2 ワークショップ
Using Symfony Templating On Symfony 1
Using Symfony Templating On Symfony 1
Doctrine2 odm-workshop-1
Doctrine2 odm-workshop-1
Guiなテスト環境
Guiなテスト環境
Symfony2 intro-20111204
Symfony2 intro-20111204
Symfony事例紹介
Symfony事例紹介
Symfony勉強会#9 form
1.
Symfonyの Formあれこれ Symfony 勉強会 #9 岡田祐一
@okapon_pon
2.
自己紹介 • 名前:岡田祐一 (@okapon_pon) •
所属:株式会社クロコス エンジニア • 2013年∼ 日本Symfonyユーザー会 • Symfony歴 2年ほど
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.
前回のワークショップ Symfony勉強会 #8 サンプルコード (ver.
Symfony2.2) https://github.com/okapon/symfony- workshop/wiki
5.
今日のお話 フォーム(Form)
6.
内容 • Symfony Formの特徴 •
Formあれこれ (Tips)
7.
Symfony Form 特徴 •
高度な抽象化 • さまざまな FormType • プレゼンテーションレイヤーの分離 • DIへの統合 • Validationの組み込み
8.
柔軟なモデルバインディング • モデルに依存しないデータバインディング • プレゼンテーション層とドメイン層の分離
9.
Data Transformers • Entity
Valueへ変換 • プレゼンテーション層とドメイン層の分離
10.
拡張性 • FormExtension • Symfony
DIでうまく統合
11.
イベント駆動 • EventDispatcherを内包 • 動的にフォームを組立可能 ! 各種イベント •
PRE_SET_DATA • POST_SUBMIT など
12.
Formあれこれ(Tips) このフォームどう実装したらいいの? Twigでformの値を得るには?
13.
規約への同意を確認したい 例)利用規約への同意確認
14.
規約への同意を確認したい • フォームにagreementというcheckboxフィールドを 定義 • mapped
オプションfalseでデータオブジェクトには マッピングしない
15.
規約への同意を確認したい • バリデーションを行うコールバック関数を EventListenerに登録 ※ FormEventsやFormErrorなどのクラス をインポートする必要がある
16.
カスタムFormFieldType • 再利用可能にする
17.
カスタムFormFieldType 定義 ! 利用 alias指定
18.
Delete機能でCSRF対策 例) 記事情報を削除する機能 Formの CSRF Protection
機能を使って CSRF対策を行う!
19.
記事情報をDBから削除するAction Delete機能でCSRF対策 CSRF対策
20.
Twig関数化しとくと便利 テンプレート側 ! ! loopの中で出したい場合 deleteでCSRF対策 20
21.
Twig で使える Form変数 21 各種フォーム変数へは、 form.フィールド名.vars.変数名 でアクセスできる 先ほどのCSRFの例では
form._token.vars.value
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.
Twigで使える Form変数 23 required属性がついているlabelタグには自動で *印をつけたい! (応用編)カスタムテンプレート化
24.
Formのカスタムテンプレート 24 作成の詳しい方法はこちら http://docs.symfony.gr.jp/symfony2/cookbook/ form/form_customization.html
25.
画像を選択させたい 例)ECサイトで商品を選択させたい
26.
Twigでつかう変数を工夫する!! Delete機能でCSRF対策
27.
画像を選択させたい FormType側
28.
画像を選択させたい テンプレート側 • form.itemに forでアクセス(選択項目のFormViewを取り 出す) •
form_widget(item)を使って必要なradio boxを表示する • item.vars.labelには Itemインスタンスが入ってます
29.
まとめ ! • Formはモデルに依存せず柔軟にマッピングで きる • 拡張性が提供されている •
FormViewが分かれば色々できるようになる!
30.
ご清聴ありがとうございました
Baixar agora