使用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断言?
谢谢你:)
答案 0 :(得分:1)
对表单数据执行验证。如果假定某个实体的表单(设置了选项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
事件之前形成数据。