Forms Symfony表单长度约束替代NotBlank约束

Forms Symfony表单长度约束替代NotBlank约束,forms,symfony,constraints,Forms,Symfony,Constraints,所以在我的表单中,我有一个字段要插入密码。在formbuilder中的字段上,我添加了2个约束;一个用于字段是否为空,另一个用于密码是否太短 new NotBlank([ 'message' => 'reset.password.error.enterpassword', ]), new Length([ 'min' => 6, 'minMessage' => 'reset.password.error.passwordtooshort', //

所以在我的表单中,我有一个字段要插入密码。在formbuilder中的字段上,我添加了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,
]),
但是,当我将password字段留空时,它将使用长度约束(我有点理解,因为长度为0的密码小于6),但是它不应该使用NotBlank约束,因为它是定义的吗


我还尝试将其置于长度约束之后,但仍然不起作用。

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

以前它不匹配空输入

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

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

请参阅文档

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

新长度([
“allowEmptyString”=>正确,
“min”=>6,
'minMessage'=>'reset.password.error.passwordtooshort',
//出于安全原因,Symfony允许的最大长度
“最大值”=>4096,
]),
新非空白([
'消息'=>'重置.密码.错误.输入密码',
]),