【问题标题】:Symfony 4 form validationSymfony 4 表单验证
【发布时间】:2019-01-12 21:21:24
【问题描述】:

我正在使用 Symfony 4.1,并且遇到了表单验证问题。 所以我不明白是否可以避免验证所有实体字段。例如我有一个用户实体,看起来像这样:

/**
 * @ORM\Entity
 * @UniqueEntity(fields="email", message="Email already taken")
 * @UniqueEntity(fields="username", message="Username already taken")
 */
class User implements UserInterface
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=255, unique=true)
     * @Assert\NotBlank()
     * @Assert\Email()
     */
    private $email;

    /**
     * @ORM\Column(type="string", length=255, unique=true)
     * @Assert\NotBlank()
     * @Assert\Length(
     *      min = 2,
     *      max = 50,
     *      minMessage = "Your username must be at least {{ limit }} characters long",
     *      maxMessage = "Your username cannot be longer than {{ limit }} characters"
     * )
     */
    private $username;

可以注册,但不能登录。 我的登录表单类型:

class UserLoginType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('username', TextType::class)
            ->add('password', PasswordType::class)
        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => User::class,
        ));
    }
}

登录页面只有用户名和密码字段。但是当我尝试插入数据时,symfony 显示一个电子邮件错误。

分析器: 请告诉我我做错了什么?

【问题讨论】:

    标签: forms symfony


    【解决方案1】:

    是的,您可以使用此处记录的validation groups 实现此目的: http://symfony.com/doc/current/validation/groups.html

    基本上都是用注解来指定不同的组进行注册和登录:

     * @Assert\NotBlank(groups={"registration", "login"})
     * @Assert\Email(groups={"registration"})
     */
    private $email;
    

    取决于您想要验证的字段和时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-25
      • 2015-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多