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;
您还可以在实体级别指定,这样所有使用上述实体的表单都将得到验证,您还可以在实体级别指定,这样所有使用上述实体的表单都将得到验证,