symfonyのバリデーションファイル
バリデーションをYAMLで書けるのはよいのですが、イマイチ文法がはっきりと分かりません。ちょっとソースを読んでみました。
バリデーションファイルを処理しているのは sfValidatorConfigHandler クラスです。このヒトがYAMLを読んで、バリデーションのコードを自動生成して、キャッシュ(myproj\cache\myapp\dev\config)に出力しているようです。
methods: post: [field1, field2, ...] get: [field1, field2, ...] names: field1: file: group: required: required_msg: type: validators: [validator1, validator2, ...] validator1: class: validatorClass1 file: param:
バリデーション・ファイルの記法は、fieldsカテゴリを使う場合とそうでない場合とで2種類存在しているようです。以下のメモはfieldsカテゴリを使わない場合です。
- 最上位には methods と names の両方のカテゴリがなければならない。
- methods カテゴリの下には、post と get のみが許される。その他のキーはエラーになる。
- post, get の下は、フィールド名の配列
- namesカテゴリの下には、methodsカテゴリで指定したフィールド名が存在しなければならない。
- 各フィールドはrequired属性を持っていなければならない。
- フィールド名を parent{subname} の形式にして、配列構文のフォーム・フィールドを指定することができる。(この場合に、単独でparentを指定された場合に、どう動くかはあまり考えられていない気がします。)
- file属性
- inputフィールドのtype属性が"file"であることを示します。デフォルトはfalse。type属性を'file'にしても同じ意味を持ちます。
- group属性
- デフォルトはnull
- parent属性
- 配列構文でない場合はnull
- required属性
- デフォルトはtrue
- required_msg属性
- デフォルトは'Required'
- type属性
- inputフィールドのtype属性を指定します。配列構文でない場合のデフォルトは'parameter'です。
- validators属性
- このフィールドに適用されるvalidator名の配列
- バリデータ名
- class属性:バリデータのクラス名
- file属性:何かしら外部ファイルを読込むみたい。
- param属性:バリデータクラスの仕様に依存