Validation synfomy 4实体表单更新验证断言
表单显示正确,没有“password”和“passwordConfirm”字段 所以我认为验证($form->isValid())只检查提交的字段(name和mail)。但它控制用户实体的所有字段 我猜这是因为我将$User传递到createForm中 如何不测试“password”和“passworConfirm”字段 我尝试了'mapped'=>false,但它不起作用,或者我做错了 我还尝试使用参数转换器{id},但我不知道如何保护它,因为我不希望用户能够更改URL栏中的id 谢谢你的帮助 实体用户Validation synfomy 4实体表单更新验证断言,validation,types,controller,entity,assert,Validation,Types,Controller,Entity,Assert,表单显示正确,没有“password”和“passwordConfirm”字段 所以我认为验证($form->isValid())只检查提交的字段(name和mail)。但它控制用户实体的所有字段 我猜这是因为我将$User传递到createForm中 如何不测试“password”和“passworConfirm”字段 我尝试了'mapped'=>false,但它不起作用,或者我做错了 我还尝试使用参数转换器{id},但我不知道如何保护它,因为我不希望用户能够更改URL栏中的id 谢谢你的帮助
private name;
private mail;
private password;
private passwordConfirm;
表单用户类型
public function buildForm(FormBuilderInterface $builder, array $options)
{
$fromUpdate = $options["fromUpdate"];
if (!$fromUpdate) {
$builder->add('password', PasswordType::class)
->add('passwordConfirm', PasswordType::class);
}
$builder
->add('name')
->add('mail');
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => User::class,
'fromUpdate' => false,
]);
}
用户控制器
/**
* @Route("/par/updatePar", name="updatePar")
*/
public function updatePar(Request $request, EntityManagerInterface $manager)
{
$user = $this->getUser();
$form = $this->createForm(UserType::class, $user, ["fromUpdate" => true]);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
**PROBLEM :
tests the validation of the password and passwordConfirm fields when they are not submitted**
$manager->persist($user);
$manager->flush();
$this->addFlash("success", "xxx");
return $this->redirectToRoute('xxx');
}
return ...
}