NotBlank断言和"必须是字符串类型,null给定"

时间:2017-08-21 19:47:50

标签: forms symfony assert

使用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属性验证表单,则会出现此错误:

  

传递给AppBundle \ Entity \ UserContributorVersion :: setName()的参数1必须是string类型,给定为null

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

谢谢你:)

1 个答案:

答案 0 :(得分:1)

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

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

enter image description here

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