いくつかのサブフォームを含む複雑なフォームがあり、メインフォームで選択したラジオボタンに応じて、各サブフォームを個別に検証できるようにしたいと考えています。私は検証グループでこれを達成したかった。
注:data_class
モデルはありません。アレイを使用しています。
これが私のフォームの簡略化です:
class MyType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('xxx', 'text', array(
'constraints' => array(
new Constraints\NotBlank(),
),
'validation_groups' => array(
'xxx',
)
))
;
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'validation_groups' => function(FormInterface $form) {
return array('xxx');
},
));
}
}
問題は、このフィールドの検証がトリガーされないことです。
setDefaultOptions
これが機能する場合、送信されたデータに応じて、目的のグループを検証するように簡単に変更できます。
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'validation_groups' => function(FormInterface $form) {
$data = $form->getData();
return array($data['type']);
},
));
}
何か案が?