我在symfony的验证文件夹中有user.yml文件,我用它来验证数据。例如:
$valid
我想验证" startDate"字段,如果用户已经通过它现在正在工作。但是如果用户没有通过" startDate"然后我想跳过这个验证。即希望将此验证作为可选项。
如何实现这一目标?
我尝试将必需的false设置如下:
input
哪个不能正常工作symfony返回错误
答案 0 :(得分:1)
只需影响渲染see:
如果为true,则将呈现HTML5必需属性。相应的标签也将使用必需的类进行渲染。
这是肤浅的,独立于验证。充其量,如果你 让Symfony猜测你的字段类型,那么这个选项的值就会出现 从你的验证信息中猜到。
您应该在表单中使用empty_data
,如下所示:
$builder->add('gender', ChoiceType::class, array(
'choices' => array(
'm' => 'Male',
'f' => 'Female'
),
'required' => false,
'placeholder' => 'Choose your gender',
'empty_data' => null
));
在这种情况下,您的实体应具有属性nullable=true
,当然不应使用提及的NotBlank
答案 1 :(得分:0)
由于您使用NotBlank
,因此始终需要该字段。但是,您只想验证字段是否实际设置。
我认为你不会用Symfony的内置验证来实现这一点,但你可以编写处理这种情况的自定义验证约束:http://symfony.com/doc/current/cookbook/validation/custom_constraint.html
答案 2 :(得分:0)
只需删除NotBlank
\APIBundle\Entity\User:
properties:
startDate:
- Date: { message: 'Enter the valid start date.' }
NotBlank
相当于reqired
。