问题描述
窗体正确显示,没有'password'和'passwordConfirm'字段。
所以我认为验证($ form-> isValid())仅检查提交的字段(名称和邮件)。但是它控制着User实体的所有字段。
我猜这是因为我正在将$ 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,]);
}
UserController
/**
* @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 ...
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)