【问题标题】:Symfony forms Length constraint overrides NotBlank constraintSymfony 表单长度约束覆盖 NotBlank 约束
【发布时间】:2020-05-29 14:04:59
【问题描述】:

所以在我的表单中,我有一个输入密码的字段。在表单生成器的字段中,我添加了 2 个约束;一种用于字段为空,另一种用于密码太短。

new NotBlank([
    'message' => 'reset.password.error.enterpassword',
]),
new Length([
    'min' => 6,
    'minMessage' => 'reset.password.error.passwordtooshort',
    // max length allowed by Symfony for security reasons
    'max' => 4096,
]),

但是,当我将密码字段留空时,它将使用长度约束(我有点理解,因为长度为 0 的密码小于 6),但它不应该使用 NotBlank 约束,因为它已经定义了吗?

我也试过把它放在长度约束之后,但还是不行。

【问题讨论】:

    标签: forms symfony constraints


    【解决方案1】:

    Length 验证器的行为在最近的 symfony 版本中发生了变化。

    以前它匹配空输入。

    allowEmptyString 选项控制是否允许空字符串。

    默认为false,而旧的symfony版本默认为true

    请参阅文档Length#allowemptystring

    allowEmptyString 设置为true 以解决您的问题:

    new Length([
        'allowEmptyString' => true,
        'min' => 6,
        'minMessage' => 'reset.password.error.passwordtooshort',
        // max length allowed by Symfony for security reasons
        'max' => 4096,
    ]),
    new NotBlank([
        'message' => 'reset.password.error.enterpassword',
    ]),
    

    【讨论】:

      猜你喜欢
      • 2021-09-27
      • 2021-02-24
      • 2013-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-07
      相关资源
      最近更新 更多