symfony2 entityにマップしない項目のvalidate
entityのバリデーションルールをform classで敢えて外す場合、以下の用に記述する。
$builder ->add('name', 'text', array( 'mapped' => true, //without entity 'constraints' => //adding local validation array( new NotBlank( array('message'=>'入力して下さい。')), new Email( array('message'=>' 不正なメールアドレスです。')), ), ))
で仮にcontrollerから、
$form = $this->createForm(new myType(), $entity, array( 'validation_groups' => array('hoge') ) );
のようにビルドされるformの場合、
'constraints' => //adding local validation array( new NotBlank( array( groups=>array('hoge'), 'message'=>'入力して下さい。')), ),
というように、validation groupを設定しないと機能しない。
ちなみにyamlで複数グループに制約設ける場合、
properties: name: - NotBlank: groups: [hoge, foo] message: 入力して下さい。
のようにして複数のグループに属することができる。
で、groupsを指定しない項目は、全グループに適用されるわけでなくグループ未指定のformに適用される。