Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 验证小组对;“不空白”;约束使字段具有;“必需”;不使用时的属性_Html_Symfony_Validation_Symfony Forms_Symfony 2.8 - Fatal编程技术网

Html 验证小组对;“不空白”;约束使字段具有;“必需”;不使用时的属性

Html 验证小组对;“不空白”;约束使字段具有;“必需”;不使用时的属性,html,symfony,validation,symfony-forms,symfony-2.8,Html,Symfony,Validation,Symfony Forms,Symfony 2.8,我有一个实体字段,如下所示: /** * @ORM\Column(nullable=true) * @Assert\NotBlank(groups={"myGroup"}) */ protected $field; 然后我调用一个没有任何验证组的实体表单(我的configureOptions函数只设置data\u类)。但该字段是使用HTML中的required=“required”属性创建的: <input id="entity_field" name="entity[field]

我有一个实体字段,如下所示:

/**
 * @ORM\Column(nullable=true)
 * @Assert\NotBlank(groups={"myGroup"})
 */
protected $field;
然后我调用一个没有任何验证组的实体表单(我的
configureOptions
函数只设置
data\u类
)。但该字段是使用HTML中的
required=“required”
属性创建的:

<input id="entity_field" name="entity[field]" required="required" type="text">


但是,如果我摆弄HTML并取出
required=“required”
,验证将在后端按预期工作(即
NotBlank
不适用于此表单)。

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

所需选项

最常见的选项是必填选项,可应用于任何字段。默认情况下,required选项设置为true,这意味着如果字段留空,支持HTML5的浏览器将应用客户端验证。如果不希望出现这种行为,请禁用HTML5验证或将字段上的必需选项设置为false:

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

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


但是如果我将
@Assert\NotBlank
取出,则
required
属性将消失。换句话说,框架中的某些内容读取
NotBlank
,并在表单中插入
required=“required”
。当我在正确的验证组时,它不应该聪明地只阅读
NotBlank
?这是一个bug吗?@Heitor:据我所知,symfonyth中的服务器端验证和客户端验证之间没有任何关系。服务器端和客户端可能分别进行验证,但当您设置某些“@Assert”约束时,它们在这两种情况下都起作用。尝试在字段中设置
NotBlank
,您将在HTML中自动获得
required=“required”
。尝试设置
Length
约束,您将得到
maxlength=“X”
。当然,我假设Symfony标准版默认行为。