php – Symfony2根据提交的数据形成验证组
发布时间:2020-12-13 22:04:36 所属栏目:PHP教程 来源:网络整理
导读:我有一些复杂的形式,有几个子表单,我希望能够根据主窗体中选择的单选按钮分别验证每个子表单.我希望通过验证组实现这一目标. 注意:我没有data_class模型,我使用数组. 这是我简化的表格: class MyType extends AbstractType{ public function buildForm(For
我有一些复杂的形式,有几个子表单,我希望能够根据主窗体中选择的单选按钮分别验证每个子表单.我希望通过验证组实现这一目标.
注意:我没有data_class模型,我使用数组. 这是我简化的表格: class MyType extends AbstractType { public function buildForm(FormBuilderInterface $builder,array $options) { $builder->add('xxx','text',array( 'constraints' => array( new ConstraintsNotBlank(),),'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']); },)); } 任何的想法? 解决方法
您必须将验证组名称传递给约束,而不是表单本身.通过将组名称分配给表单,您可以指定要在验证中使用的约束.
更换 $builder->add('xxx',array( 'constraints' => array( new ConstraintsNotBlank(),'validation_groups' => array( 'xxx',) )) ; 同 $builder->add('xxx',array( 'constraints' => array( new ConstraintsNotBlank(array( 'groups' => 'xxx' )),)) ; 默认情况下,约束具有“默认”(大写)组,并且表单使用此组来验证是否未指定.如果您希望其他约束没有显式组进行验证,则指定的组将传递“默认”组. $resolver->setDefaults(array( 'validation_groups' => function(FormInterface $form) { $data = $form->getData(); return array($data['type'],'Default'); },)); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |