我有一个实体字段如下:
/**
* @ORM\Column(nullable=true)
* @Assert\NotBlank(groups={"myGroup"})
*/
protected $field;
然后我调用一个没有任何验证组的实体表单(我的configureOptions
函数只设置data_class
)。但是该字段是使用HTML中的required="required"
属性创建的:
<input id="entity_field" name="entity[field]" required="required" type="text">
但如果我使用HTML并取出required="required"
,则验证将在后端按预期工作(即NotBlank
不适用于此表单。)
答案 0 :(得分:1)
注释@Assert\NotBlank(groups={"myGroup"})
与服务器端相关,输入属性required="required"
在表单构造中定义。
如果不需要此字段,则应在表单中将必需选项定义为false,请查看文档here和here
所需的选项
最常见的选项是必需选项,可以应用于任何字段。默认情况下,必需选项设置为true,这意味着如果该字段留空,HTML5就绪的浏览器将应用客户端验证。如果您不想要此行为,请禁用HTML5验证或将字段上的必需选项设置为false:
另请注意,将required选项设置为true不会导致应用服务器端验证。换句话说,如果用户为该字段提交空白值(例如,使用旧浏览器或Web服务),除非您使用Symfony的NotBlank或NotNull验证约束,否则它将被接受为有效值。
换句话说,所需的选项是“不错的”,但应始终使用真正的服务器端验证。