symfony 3选择验证问题

时间:2017-09-12 17:11:05

标签: symfony entity symfony-3.3 symfony-validator symfony3.x

我有一个选择字段(下拉列表),我想根据数据库表进行验证。

基本上,如果值在查询的结果中,则它是有效的。

我不太清楚Symfony指南中报告的回调是如何工作的:(

但是,我有validation.yml个文件:

User\UserBundle\Entity\Group:
    properties:
        role:
            - Choice:
                groups: [signUp]
                callback: [User\UserBundle\Entity\Group, getRoles]

实体Group.php

class Group
{
    /** @var int */
    private $id;

    //...

    public static function GetRoles()
    {
        return ['admin', 'user'];
    }
}

此示例运行正常,但当我尝试从组存储库GroupRepository.php

获取这些值时出现问题
class GroupRepository extends EntityRepository
{
    public function getRoles()
    {
        return $this->createQueryBuilder('r')
            ->getQuery()
            ->getResult();
    }
}

在这个阶段我应该做些什么?我使用的方法是正确的,还是应该直接在validation.yml中调用Group Repository?或者我完全离开了?

1 个答案:

答案 0 :(得分:1)

据我了解,您正试图从存储库中获取这些选项,如:

...
callback: [User\UserBundle\Repository\GroupRepository, getRoles]

这不起作用,因为需要通过Doctrine ORM服务初始化存储库。

我猜你必须创建一个自定义的Constraint类和ConstraintValidator,其中后者被配置为服务并获取作为参数传递的实体管理器。

请参阅http://symfony.com/doc/current/validation/custom_constraint.html