NotBlank 断言和 "must be of the type string, null given"

NotBlank assert and "must be of the type string, null given"

使用 Symfony 3.3,我有一个带有 NotBlank 断言的实体:

class UserContributorVersion
{
    /**
     * @var string
     *
     * @ORM\Column(type="string")
     * @Assert\NotBlank()
     */
    private $name;

    /**
     * Set name
     * 
     * @param string $name
     */
    public function setName(string $name)
    {
        $this->name = $name;
    }
}

但是如果我使用 novalidate 属性验证表单,我会遇到这个错误:

Argument 1 passed to AppBundle\Entity\UserContributorVersion::setName() must be of the type string, null given

我不明白,如果我有 NotBlank 断言,为什么要强制 setName(string $name = null)?

谢谢你:)

对表单数据执行验证。如果表单应该用于某个实体(选项 data_class 已设置),则表单数据是应该修改的实体。在将请求值设置为表单数据(在您的案例中为实体)字段后执行验证。

您可以在此处找到表单提交流程: https://symfony.com/doc/current/form/events.html#submitting-a-form-formevents-pre-submit-formevents-submit-and-formevents-post-submit

验证已注册为 FormEvents::POST_SUBMIT 事件。请求值设置为在 POST_SUBMIT 事件之前形成数据。