首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony -验证这些值是否在组合框形式中重复。

Symfony -验证这些值是否在组合框形式中重复。
EN

Stack Overflow用户
提问于 2016-01-08 12:43:52
回答 1查看 74关注 0票数 0

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

形式

代码语言:javascript
复制
->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

如有任何帮助,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-08 14:29:26

为此您需要一个自定义验证,您可以使用回调创建一个自定义验证,如下所示。

假设属性为数组

实体类上的

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

代码语言:javascript
复制
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作为验证格式,则在本例中需要从上述验证函数中删除:

代码语言:javascript
复制
/**
 * @Assert\Callback
 */

..。

代码语言:javascript
复制
# src/AppBundle/Resources/config/validation.yml
AppBundle\Entity\Author:
    constraints:
        - Callback: [validate]

有关回调的更多信息,请参阅Symfony回调

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34677438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档