“NotBlank”约束上的验证组使字段在未使用时具有“必需”属性

时间:2017-03-31 14:02:15

标签: html5 symfony validation symfony-forms symfony-2.8

我有一个实体字段如下:

/**
 * @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不适用于此表单。)

1 个答案:

答案 0 :(得分:1)

注释@Assert\NotBlank(groups={"myGroup"})与服务器端相关,输入属性required="required"在表单构造中定义。 如果不需要此字段,则应在表单中将必需选项定义为false,请查看文档herehere

  

所需的选项

     

最常见的选项是必需选项,可以应用于任何字段。默认情况下,必需选项设置为true,这意味着如果该字段留空,HTML5就绪的浏览器将应用客户端验证。如果您不想要此行为,请禁用HTML5验证或将字段上的必需选项设置为false:

     

另请注意,将required选项设置为true不会导致应用服务器端验证。换句话说,如果用户为该字段提交空白值(例如,使用旧浏览器或Web服务),除非您使用Symfony的NotBlank或NotNull验证约束,否则它将被接受为有效值。

     

换句话说,所需的选项是“不错的”,但应始终使用真正的服务器端验证。