实体字段类型的Symfony2选择约束/验证

时间:2013-10-25 11:21:23

标签: php symfony doctrine-orm

我有一个具有多个选择的实体字段类型:

$builder
  ->add('products', 'entity', array(
    'class' => 'Acme\MyBundle\Entity\Product',
    'choices' => $this->getAvailableProducts(),
    'multiple' => true,
  ))
;

我想在此字段上添加最小/最大约束

use Symfony\Component\Validator\Constraints\Choice;
...
'constraints' => array(new Choice(array(
    'min' => $min,
    'max' => $max,
    'multiple' => true,
    'choices' => $this->getAvailableProducts()->toArray(),
))),

但是在这种情况下,当绑定表单时,'products'字段的值绑定是一个doctrine ArrayCollection,如果没有给出数组,验证器会抛出异常。 “类型数组的预期参数,对象给出”

这是否意味着我必须使用'choice'字段才能使用最小/最大约束?

1 个答案:

答案 0 :(得分:5)

当你有多个设置为true时,验证器将在绑定表单后收到一个集合。

您可以使用count验证约束来验证集合中的entites数量。

计数验证约束

  

验证给定集合(即数组或对象)   实现Countable)元素计数介于最小值和最小值之间   最大值。