Symfony - 验证值是否以组合框形式重复

时间:2016-01-08 12:43:53

标签: php symfony combobox

我有一个带有组合框的表单,当提交时,点值不能重复

表格

->add('points', 'choice', array(
                    'attr' => array('class' => 'form-control m-b'),
                    'choices' => array(
                        '0' => '0',
                        '1' => '1',
                        '2' => '2',
                        '3' => '3',
                        '4' => '4',
                        '5' => '5',
                        '6' => '6',
                        '7' => '7',
                        '8' => '8',
                        '9' => '9',
                        '10' => '10',
                    )
                ))

symfony的版本是2.6

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

您需要对此进行自定义验证,然后您可以使用回调创建自定义验证,如下所示。

假设 points 属性为数组

在您的实体类上

如果您使用注释作为验证格式:

class Author
{
    private $points;

    /**
     * @Assert\Callback
     */
    public function validate(ExecutionContextInterface $context)
    {
        if(sizeof(array_unique($this->points)) !== sizeof($this->points)){
            $context->buildViolation('Values must be unique')
                    ->atPath('points')
                    ->addViolation();
        }
    }
}

如果您使用 YAML 作为验证格式,在这种情况下您需要从上面的验证功能中删除:

/**
 * @Assert\Callback
 */

...

# src/AppBundle/Resources/config/validation.yml
AppBundle\Entity\Author:
    constraints:
        - Callback: [validate]

有关回调的详情,请参阅Symfony Callbacks