More Related Content
Similar to Form Validator Nested
Similar to Form Validator Nested (17)
Form Validator Nested
- 2. 自己紹介
• 株式会社ジェミニウム CTO
• PAUSE ID: CHIBA
• id:nihen(hatena, twitter, wassr)
• IRC での nick は chiba(__)
• ブログ
– へぼへぼ CTO 日記 (http://www.geminium.com/chiba_blog/)
– へぼへぼプログラマ日記 (http://d.hatena.ne.jp/nihen/)
• まったくプログラムのことは書いていない
- 3. My CPAN modules
• Acme::Coro::Suke
– Coro … …に「うわぁ べんぞうさんの中 すごく
…あったかいナリぃ 」といわせるモジュール
• IO::File::WithPath
– 開いたファイルの PATH を覚えてる IO::File
• FormValidator::Nested
– Nest したパラメータに対応した FormValidator
- 5. FormValidator が何故か好き
• 初 CPAN module が FormValidator::Nested
• 2009 年 8 月 18 日
• PAUSE ID request したのはその 2 年前の
2007 年 2 月でその時の why ”にも New
YAML-base FormValidator Module. e.g.
FormValidator::YAML and Catalyst-Plugin. ” と
書いてい
た。 http://groups.google.co.jp/group/perl.modules/browse_thread/thread/39b9e2516f55f958/9245563
2a24e3cb4
- 6. FormValidator とは
• 基本的には http の POST メソッドの時の入
力値検証を目的としたもの
• 入力値検証?なにそれサニタイズ脳?
– 違うよ!全然違うよ!
– サニタイズ脳は本来入力を許されるべき値を
除去してしまうこと
– 入力値検証は入力が許されない値が入力され
た場合に正常系処理を行わないこと
- 7. FormValidator に求める機能
• 追加 Form と更新 Form の設定を dry に
• requiredif 等の他値参照
• 豊富な標準 validate 機能
– 日本語系 ( ひらがな、カタカナ )
– DB 連携
• メッセージング
• 簡易な拡張性
• Filter 機能との設定の共有
• Nest したデータ構造を扱える
すべてを満たしているのは ::Nested だけ! w
- 8. Nest したデータ構造とは
• http の POST は通常フラットなデータ構造
しか扱えない
• そこで下記のように擬似的にネストデー
タを表現したりする。 user[0]
[mail]=hoge@example.com&user[0][name]=chiba
• PHP だと標準でネストデータに変換してく
れる。
• Perl では CGI::Expand モジュールでできま
す
- 9. Nest したデータを FormValidator
で
• user[0][mail] と user[1][mail] の検証項目をdryに書き
たい
• パラメータ名が固定じゃない場合はそもそも検証でき
ない FormValidator は多い
• FormValidator::Nested ではこう書ける
[hoge.yml]
user:
nested: user
array: 1
[user.yml]
mail:
validators:
- Email#email
- 10. FormValidator をどう使っている
か
• POST はブラウザ遷移禁止
• XHR で POST して response に成功か失敗か
を json でいれる
• 失敗した場合に FormValidator の result の
データ構造をいれておいてエラーメッ
セージを適切な場所に表示