我有一个嵌入式表单(对于Address
),它有各自属性的验证。我将这个表单嵌入到父表单中(对于Person
),我在父表单上有一个复选框,上面写着" Person有地址?"
如果未选中此复选框,我想禁用嵌入式Address
表单的所有验证。或者,更好的是,如果我可以完全删除嵌入的表单,那也没关系。
我查看了使用验证组,但用例并不匹配我自己的。
答案 0 :(得分:2)
好的,想通了。在我的表单构建器中添加AddressType
嵌入表单时,我只传递验证组的选项,如下所示:
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
$form = $event->getForm();
$form->add('address', new AddressType(), array(
'label' => 'Address',
'validation_groups' => function (FormInterface $form) {
if ($form->getParent()->get('toggleAddress')->getData() === false) {
return array();
}
return array('Default');
}
));
});
在验证组功能中,进行检查以查看启用地址的切换是否已关闭。如果是这样,返回一个空白数组,删除所有验证组,包括"默认"之一。
答案 1 :(得分:0)