Php Symfony表单在密码为空时生成错误
我正在建立一个密码重置表单。用户只需键入两次密码。我想检查它是最小8个字符长,不是空的,两个密码是相同的 我使用以下表单类型设置:Php Symfony表单在密码为空时生成错误,php,symfony,symfony-forms,Php,Symfony,Symfony Forms,我正在建立一个密码重置表单。用户只需键入两次密码。我想检查它是最小8个字符长,不是空的,两个密码是相同的 我使用以下表单类型设置: $builder ->add('password', RepeatedType::class, array( 'type' => PasswordType::class, 'translation_domain' => 'validators', 'invalid_message' => 'password_must_
$builder
->add('password', RepeatedType::class, array(
'type' => PasswordType::class,
'translation_domain' => 'validators',
'invalid_message' => 'password_must_match',
'required' => true,
'constraints' => array(
new NotBlank(),
new Length(array('min' => 8)),
)
))
->add('save', SubmitType::class);
密码必须匹配,并且至少8个字符的检查有效。仅当将密码留空时,在控制器中的$form->handleRequest($request)
行;我得到以下错误:
属性路径处应提供类型为“string”、“null”的参数
“密码”
我已经尝试了很多建议,比如在实体中添加
'empty_data'=>array()
和@Assert\NotBlank
。您的用户
实体有一个方法setPassword(string$password)
,其中只有string
类型提示参数。
在提交表单时,symfony通过调用setter方法填充实体,并在验证之前进行
在您的情况下,表单提交时可能会抛出一个错误$form->handleRequest($request)
,因为在$password
中调用setPassword(string$password)
方法时,它是null
您应该将
null
类型添加到setPassword(?string$password)
您是否尝试过'empty\u data'=>''
?因为数据应该是一个字符串而不是数组。是的,我试过了,但是我得到了相同的结果。