synfomy 4实体表单更新验证声明

问题描述

窗体正确显示,没有'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 (将#修改为@)