Forms Symfony2-NotBlank约束不适用于EntityType

Forms Symfony2-NotBlank约束不适用于EntityType,forms,validation,symfony,constraints,Forms,Validation,Symfony,Constraints,我的表单中有两个EntityType字段,并且都分配了NotBlank约束 现在,我有一个问题,NotBlankconstraint并不是只在一个字段上工作,并且设置了multiple=>true $builder ->add('preferredCountries', EntityType::class, array( 'required' => false, 'class' => 'IndexBundle:Country',

我的表单中有两个
EntityType
字段,并且都分配了
NotBlank
约束

现在,我有一个问题,
NotBlank
constraint并不是只在一个字段上工作,并且设置了
multiple=>true

$builder
    ->add('preferredCountries', EntityType::class, array(
        'required' => false,
        'class' => 'IndexBundle:Country',
        'property' => 'name',
        'empty_value' => 'Choose',
        'multiple' => true,
        'query_builder' => function (EntityRepository $er) {
            return $er->createQueryBuilder('c')
                ->where('c.name != :name')
                ->orderBy('c.name', 'ASC')
                ->setParameter('name', 'Other');
        },
        'constraints' => array(
            new NotBlank(array(
                'message' => 'blank!!!',
            )),
        )
    ))
    ->add('internshipProgram', EntityType::class, array(
        'required' => false,
        'class' => 'IndexBundle:InternshipProgram',
        'property' => 'name',
        'empty_value' => 'Choose',
        'constraints' => array(
            new NotBlank(array(
                'message' => 'blank!!!',
            )),
        )
    ))
在这种情况下,当我提交空值时,字段
internishipprogram
会出错,而
preferedcountries
不会

表格显示:

<div class="form-group col-xs-12">
    {{ form_label(current_internship_form.preferredCountries, 'Preferred countries', { 'label_attr': {'class': 'label-text'} }) }}
    {{ form_widget(current_internship_form.preferredCountries) }}
    <span class="error text-danger small">{{ form_errors(current_internship_form.preferredCountries) }}</span>
</div>
<div class="form-group col-xs-12">
    {{ form_label(current_internship_form.internshipProgram, 'What type of training agreement will you have?', { 'label_attr': {'class': 'label-text'} }) }}
    {{ form_widget(current_internship_form.internshipProgram, { 'id': 'internship_program', 'attr': {'class': 'form-control '}}) }}
    <span class="error text-danger small">{{ form_errors(current_internship_form.internshipProgram) }}</span>
</div>

{{form_label(当前_实习_form.preferredCountries,'preferredCountries',{'label_attr':{'class':'label text'}}}}}
{{form_小部件(当前_实习_form.preferredCountries)}
{{form_errors(当前实习_form.preferredCountries)}
{form_label(当前的{u实习生}form.interpainthipprogram,'你将有什么类型的培训协议?',{'label_attr':{'class':'label text'}}}}
{{form_小部件(当前的{u实习}form.interpainthipprogram,{'id':'interpaint_program','attr':{'class':'form control'}}}}
{{form_errors(当前_interpaint_form.interpainthipprogram)}

我的代码中有错误吗?还是与多项选择有关?是否有人遇到过类似的问题并知道如何解决它?

如果
多个
设置为
,则不能对
EntityType
使用
NotBlank
约束。因为数组永远不会为空。您应该尝试使用
count
约束,如下所示:

$builder
    ->add('preferredCountries', EntityType::class, array(
        'required' => false,
        'class' => 'IndexBundle:Country',
        'property' => 'name',
        'empty_value' => 'Choose',
        'multiple' => true,
        'query_builder' => function (EntityRepository $er) {
            return $er->createQueryBuilder('c')
                ->where('c.name != :name')
                ->orderBy('c.name', 'ASC')
                ->setParameter('name', 'Other');
        },
        'constraints' => array(
               new Count(array(
                   'min' => 1,
                   'minMessage' => "Should not be blank"
               ))
            )
    ))
...

multiple
设置为
true
时,不能对
EntityType
使用
NotBlank
约束。因为数组永远不会为空。您应该尝试使用
count
约束,如下所示:

$builder
    ->add('preferredCountries', EntityType::class, array(
        'required' => false,
        'class' => 'IndexBundle:Country',
        'property' => 'name',
        'empty_value' => 'Choose',
        'multiple' => true,
        'query_builder' => function (EntityRepository $er) {
            return $er->createQueryBuilder('c')
                ->where('c.name != :name')
                ->orderBy('c.name', 'ASC')
                ->setParameter('name', 'Other');
        },
        'constraints' => array(
               new Count(array(
                   'min' => 1,
                   'minMessage' => "Should not be blank"
               ))
            )
    ))
...

也可以在实体级别指定

    /**
     * @Count(min = 1, minMessage = "At least one branch must be selected")
     */
    protected $multiCheckBox;

也可以在实体级别指定

    /**
     * @Count(min = 1, minMessage = "At least one branch must be selected")
     */
    protected $multiCheckBox;

您还可以在实体级别指定,这样所有使用上述实体的表单都将得到验证,您还可以在实体级别指定,这样所有使用上述实体的表单都将得到验证,