如何在symfony验证(yml)文件中设置所需的false

时间:2016-06-01 06:49:12

标签: php symfony

我在symfony的验证文件夹中有user.yml文件,我用它来验证数据。例如:

$valid

我想验证" startDate"字段,如果用户已经通过它现在正在工作。但是如果用户没有通过" startDate"然后我想跳过这个验证。即希望将此验证作为可选项。

如何实现这一目标?

我尝试将必需的false设置如下:

input

哪个不能正常工作symfony返回错误

3 个答案:

答案 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