我有一个名为 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);
$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' => ''
));
}