Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony表单在密码为空时生成错误_Php_Symfony_Symfony Forms - Fatal编程技术网

Php Symfony表单在密码为空时生成错误

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_

我正在建立一个密码重置表单。用户只需键入两次密码。我想检查它是最小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)
行;我得到以下错误:

属性路径处应提供类型为“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'=>''
?因为数据应该是一个字符串而不是数组。是的,我试过了,但是我得到了相同的结果。