0

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

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

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

4

1 回答 1

1

使用选项解析器您可以将组名验证作为选项传递并在 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' => ''
            ));
        }
于 2018-05-13T18:21:08.873 回答