Forms 非空白断言和;必须是字符串类型,如果给定为空;
使用Symfony 3.3,我有一个断言为NotBlank的实体:Forms 非空白断言和;必须是字符串类型,如果给定为空;,forms,symfony,assert,Forms,Symfony,Assert,使用Symfony 3.3,我有一个断言为NotBlank的实体: class UserContributorVersion { /** * @var string * * @ORM\Column(type="string") * @Assert\NotBlank() */ private $name; /** * Set name * * @param string $name
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必须是字符串类型,给定为null
我不明白,如果我没有空的断言,为什么要强制setName(string$name=null)
谢谢:)对表单数据执行验证。如果表单是针对某个实体的(设置了选项
data\u class
),那么表单数据就是应该修改的实体。在将请求值设置为表单数据(在您的案例实体中)字段后,将执行验证
您可以在此处找到表单提交流程:
验证注册为
FormEvents::POST_SUBMIT
event。请求值被设置为在POST\u SUBMIT
事件之前形成数据。因为如果您只按了提交按钮而没有插入任何数据,那么字段为空,并且您键入的内容暗示您需要字符串。非常感谢:)最佳解决方案是什么?在formType中添加断言(在实体中删除)或在实体中的setName()上添加“=null”:谢谢,我认为第二