Symfony 表单和不同的验证组

Symfony Form and different validation groups

我有一个名为 UserType 的表单,它在我的控制器中用于创建新用户:

$newUser = new User();
$form = $this->createForm(UserType::class, $newUser);
$form->submit($request->request->all());

现在,我还想有一个使用表单的更新路径。表单可能是不同的,因为某些属性在创建后无法更改。因此,我也想在实体中进行不同的验证。如何通过控制器中的表单传递不同的验证组?

使用选项解析器您可以将组名验证作为选项传递并在 UserType 中获取它

$newUser = new User();
$form = $this->createForm(UserType::class, $newUser, ['validation'=>'your_validation_group_name']);
$form->submit($request->request->all());

并在 UserType

public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('username', TextType::class, [
                'validation'=> $options['validation'] //contains your_validation_group_name 
            ])
        ;
    }
    public function configureOptions(OptionsResolver $resolver)
        {
            $resolver->setDefaults(array(
                'validation' => ''
            ));
        }