具有组的子窗体上的Symfony Assert \ Valid()

时间:2018-10-05 13:09:53

标签: symfony symfony-forms

我有一个带有子表单的表单以及两个表单的相应操作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;

0 个答案:

没有答案