3

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

$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”字段绑定的值是一个学说 ArrayCollection,如果没有给出数组,验证器会抛出异常。“数组类型的预期参数,给定对象”

这是否意味着我必须使用“选择”字段才能使用最小/最大约束?

4

1 回答 1

5

由于您将多个设置为 true,因此验证器将在绑定您的表单后收到一个集合。

您可以使用计数验证约束来验证集合中的实体数量。

计数验证约束

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

于 2013-10-25T11:37:14.920 回答