当密码为空时,Symfony 表单生成错误
Symfony form generated an error when password is empty
我正在构建密码重设表单。用户只需输入密码两次。我想检查它至少有 8 个字符长且不为空,并且两个密码都相同。
我使用以下表单类型设置:
$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)
行的控制器中;我收到以下错误:
Expected argument of type "string", "null" given at property path
"password".
我已经尝试了很多建议,例如在实体中添加 'empty_data' => array()
和 @Assert\NotBlank
。
您的 User
实体似乎有一个方法 setPassword(string $password)
,参数只有 string
类型提示。
在提交表单时,symfony 通过调用 setter 方法填充一个实体,它发生在验证之前。
在您的情况下,表单提交 $form->handleRequest($request)
可能会引发错误,因为在 $password
中调用 setPassword(string $password)
方法时 null
您应该将 null
类型添加到 setPassword(?string $password)
我正在构建密码重设表单。用户只需输入密码两次。我想检查它至少有 8 个字符长且不为空,并且两个密码都相同。
我使用以下表单类型设置:
$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)
行的控制器中;我收到以下错误:
Expected argument of type "string", "null" given at property path "password".
我已经尝试了很多建议,例如在实体中添加 'empty_data' => array()
和 @Assert\NotBlank
。
您的 User
实体似乎有一个方法 setPassword(string $password)
,参数只有 string
类型提示。
在提交表单时,symfony 通过调用 setter 方法填充一个实体,它发生在验证之前。
在您的情况下,表单提交 $form->handleRequest($request)
可能会引发错误,因为在 $password
中调用 setPassword(string $password)
方法时 null
您应该将 null
类型添加到 setPassword(?string $password)