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属性:バリデータクラスの仕様に依存