20120507 zendform

3,123 views
3,031 views

Published on

Zend_Formの使い方

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,123
On SlideShare
0
From Embeds
0
Number of Embeds
66
Actions
Shares
0
Downloads
8
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

20120507 zendform

  1. 1. Zend_FormZ F で モ ダ ン な フ ォ ーム 処 理 2 0 1 2 / 5 / 7
  2. 2. PHPカンファレンス北海道2012 / Yusuke Ando (@yando)
  3. 3. agendaForm BasicsFormElementValidate
  4. 4. Formの処理Webアプリに頻出する扱う必要があるタグの種類が豊富様々なバリデーションも要求されるJavaScriptとの連携も求められる
  5. 5. 独自実装は危険ビューが大量のifやforeachであふれる基本的な書式チェックでのバグリスクフォームの仕様は膨らみやすい ex) 複数選択ドロップダウン   初期値のフィルイン  「ここから選択してください」
  6. 6. ライブラリに任せる PEAR HTML_QuickForm2ZendFramework Zend_FormZendFramework2 ZendFormForm symfony 1 sfForm Symfony2 SymfonyComponentForm FuelPHP FuelCoreForm CakePHP FormHelper ライブラリによってバリデーションなどに違い
  7. 7. Zend_Form
  8. 8. Zend_Formフォーム全体を担当するZend_Form各要素はZend_Form_Element検証はZend_Validate整形などはZend_Form_Decorator
  9. 9. 基本的な流れZend_Formのオブジェクトを作成必要な入力要素のElementをセットElementにValidateをセットビューではFormのオブジェクトをechoコントローラーではFormのisValidで検査
  10. 10. とりあえずの例
  11. 11. 実行結果 HTMLタグがオブジェクトから自動生成される(エラーメッセージや、タグのカスタマイズも可能)
  12. 12. Element超豊富 Button Multiselect Captcha Password Checkbox Radio File Reset Hidden Select Hash Submit Image TextMultiCheckbox Textarea
  13. 13. この書き方はマズイ
  14. 14. サブクラス作成Zend_Formのサブクラスを作成オプション設定やElementの生成はinit再利用性アップユニットテストできるようになる!
  15. 15. サブクラス化
  16. 16. by splorpValidate
  17. 17. バリデーションZend_Validateのオブジェクトを生成各ElementにaddValidator()するisValid()にデータを渡して検証検証済のデータはgetValues()で取得
  18. 18. フォームへの設定
  19. 19. 検証の実行
  20. 20. 実行結果
  21. 21. Validatorバリ豊富 Alnum GreaterThan Alpha Hex Barcode Hostname Between Iban Callback Identical Cc InArray CreditCard Int Date IpDB_NoRecordExist Isbn DB_RecordExist LessThan Digits NotEmpty EmailAddress PostCode File Regex Float StringLength
  22. 22. Validateの自作Zend_Validate_Interfaceをimplementsしたクラスを作成isValidとgetMessagesを定義isValid内で任意のロジックで判定通常と同じくElementへaddValidator
  23. 23. Validatorを自作
  24. 24. Validatorを設定
  25. 25. 実行結果
  26. 26. twokingsconfectionsDecorator
  27. 27. フォームの整形フォーム全体をrenderした時要素をrenderした時自動で様々なタグ付けを行なっている拡張したり差し替えも可能
  28. 28. 要素を直接表示フォームオブジェクト->要素名を参照標準では HtmlTag Label Errorsなどが設定済み拡張したり差し替えも可能エラーはgetErrorsで取得する
  29. 29. Decoratorを解除
  30. 30. 実行結果後は自由にマークアップを記述すれば良い
  31. 31. まとめフォームにはZend_Formを使おうZend_Formのサブクラスを作るZend_Form_Elementで要素を設定検証はZend_Validateビューでは状況に応じて表示
  32. 32. サンプル?https://github.com/yandod/php-form-sample

×