我有一个带有子表单的表单以及两个表单的相应操作DTO,在主表单中,我有一个单选按钮,该按钮应该使子表单可用或不可用。因此,当我将radio设置为yes时,我需要确保该子表单有效,因为我正在使用'validation_group'。但是,验证不会在任何时候触发,而是将空对象传递给控制器。也许我在组设置中缺少某些内容,因为如果不进行验证,将不胜感激任何建议。这是我的代码。
主要形式
$builder->add('sendInvitation', YesNoType::class, [
'label' => 'Would you like to send invitation?',
'required' => false,
'data' => true,
]);
$builder->add('invitation', InviteForm::class, [
'label' => false,
'required' => false,
]);
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver
->setDefaults([
'data_class' => 'AppBundle\Action\AddAction',
'error_bubbling' => true,
'validation_groups' =>
function (FormInterface $form) {
$groups = ['Default'];
/** @var AddAction $createAction */
$addAction = $form->getData();
if ($addAction->sendInvitation) {
$groups[] = 'send_invitation';
}
return $groups;
},
]);
}
主要表单操作
/**
* @var InviteAction
*
* @Assert\Valid(groups={send_invitation})
*
*/
public $invitation;