代码之家  ›  专栏  ›  技术社区  ›  Sanjok Gurung

Symfony 4删除RepeatedType密码字段上的默认设置约束(不为空)

  •  0
  • Sanjok Gurung  · 技术社区  · 6 年前

    我在控制器中有窗体生成器

    $form = $this->createFormBuilder($user)
    
                     ->add('firstname',TextType::class,array(
                         'label' => 'First name',
                         'attr' => array(
                             'class' => 'form-control',
                             'value' => $user->getFirstname()
                         ),
                     ))
                     ->add('surname',TextType::class,array(
                         'label' => 'Last name',
                         'attr' => array(
                             'class' => 'form-control',
                             'value' => $user->getSurname()
                         )
                     ))
                     ->add('email', EmailType::class, array(
                         'label' => 'Email',
                         'attr' => array(
                             'class' => 'form-control',
                             'value' => $user->getEmail(),
                         ),
                     ))
                     ->add('plainPassword', RepeatedType::class, array(
    
                         'type' => PasswordType::class,
                         'invalid_message' => 'The password fields must match.',
                         'options' => array('attr' => array('class' => 
                            'password-field')),
    
                         'first_options'  => array('label' => 'Password'),
                         'second_options' => array('label' => 'Repeat 
                          Password'),
                     ))
    

    正如你在地图上看到的 plainPassword 字段没有设置约束。我的目的是让用户不需要填写这个字段,如果他们不想,但是当我提交表单时 NotBlank 约束被触发,表单不会被提交。我试着设置/添加, required FALSE ,不起作用。

    new Blank() 它仍然保持默认的约束。

    有没有办法去掉这个默认值 notBlank 约束??

    约束开始的截图 enter image description here

    1 回复  |  直到 6 年前
        1
  •  0
  •   Sanjok Gurung    6 年前

    感谢@AythaNzt的评论。所以约束在我的“user Entity”类上声明了一个注释

    就是这个

     /**
     * @Assert\NotBlank()
     * @Assert\Length(max=4096)
     */
    private $plainPassword;
    

    NotBlank() 就这样变成了

    /**
     * @Assert\Length(max=4096)
     */
    private $plainPassword;