FormValidator::Nested
株式会社ジェミニウム
千葉征弘 <chiba@geminium.com>
自己紹介
• 株式会社ジェミニウム CTO
• PAUSE ID: CHIBA
• id:nihen(hatena, twitter, wassr)
• IRC での nick は chiba(__)
• ブログ
– へぼへぼ CTO 日記 (...
My CPAN modules
• Acme::Coro::Suke
– Coro … …に「うわぁ べんぞうさんの中 すごく
…あったかいナリぃ 」といわせるモジュール
• IO::File::WithPath
– 開いたファイルの PATH...
今日のテーマ
• Acme::Coro::Suke …の話 ではなく
FormValidator::Nested のお話
FormValidator が何故か好き
• 初 CPAN module が FormValidator::Nested
• 2009 年 8 月 18 日
• PAUSE ID request したのはその 2 年前の
2007 年 2 月で...
FormValidator とは
• 基本的には http の POST メソッドの時の入
力値検証を目的としたもの
• 入力値検証?なにそれサニタイズ脳?
– 違うよ!全然違うよ!
– サニタイズ脳は本来入力を許されるべき値を
除去してしまう...
FormValidator に求める機能
• 追加 Form と更新 Form の設定を dry に
• requiredif 等の他値参照
• 豊富な標準 validate 機能
– 日本語系 ( ひらがな、カタカナ )
– DB 連携
• ...
Nest したデータ構造とは
• http の POST は通常フラットなデータ構造
しか扱えない
• そこで下記のように擬似的にネストデー
タを表現したりする。 user[0]
[mail]=hoge@example.com&user[0][...
Nest したデータを FormValidator
で
• user[0][mail] と user[1][mail] の検証項目をdryに書き
たい
• パラメータ名が固定じゃない場合はそもそも検証でき
ない FormValidator は多...
FormValidator をどう使っている
か
• POST はブラウザ遷移禁止
• XHR で POST して response に成功か失敗か
を json でいれる
• 失敗した場合に FormValidator の result の
...
以上です
• ご清聴ありがとうございました
Upcoming SlideShare
Loading in …5
×

Form Validator Nested

2,578 views
2,455 views

Published on

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

  • Be the first to like this

No Downloads
Views
Total views
2,578
On SlideShare
0
From Embeds
0
Number of Embeds
584
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Form Validator Nested

  1. 1. FormValidator::Nested 株式会社ジェミニウム 千葉征弘 <chiba@geminium.com>
  2. 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. 3. My CPAN modules • Acme::Coro::Suke – Coro … …に「うわぁ べんぞうさんの中 すごく …あったかいナリぃ 」といわせるモジュール • IO::File::WithPath – 開いたファイルの PATH を覚えてる IO::File • FormValidator::Nested – Nest したパラメータに対応した FormValidator
  4. 4. 今日のテーマ • Acme::Coro::Suke …の話 ではなく FormValidator::Nested のお話
  5. 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. 6. FormValidator とは • 基本的には http の POST メソッドの時の入 力値検証を目的としたもの • 入力値検証?なにそれサニタイズ脳? – 違うよ!全然違うよ! – サニタイズ脳は本来入力を許されるべき値を 除去してしまうこと – 入力値検証は入力が許されない値が入力され た場合に正常系処理を行わないこと
  7. 7. FormValidator に求める機能 • 追加 Form と更新 Form の設定を dry に • requiredif 等の他値参照 • 豊富な標準 validate 機能 – 日本語系 ( ひらがな、カタカナ ) – DB 連携 • メッセージング • 簡易な拡張性 • Filter 機能との設定の共有 • Nest したデータ構造を扱える すべてを満たしているのは ::Nested だけ! w
  8. 8. Nest したデータ構造とは • http の POST は通常フラットなデータ構造 しか扱えない • そこで下記のように擬似的にネストデー タを表現したりする。 user[0] [mail]=hoge@example.com&user[0][name]=chiba • PHP だと標準でネストデータに変換してく れる。 • Perl では CGI::Expand モジュールでできま す
  9. 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. 10. FormValidator をどう使っている か • POST はブラウザ遷移禁止 • XHR で POST して response に成功か失敗か を json でいれる • 失敗した場合に FormValidator の result の データ構造をいれておいてエラーメッ セージを適切な場所に表示
  11. 11. 以上です • ご清聴ありがとうございました

×