Validation 在自定义验证器中获取实体管理器

Validation 在自定义验证器中获取实体管理器,validation,symfony,Validation,Symfony,我想知道是否有可能让实体管理器在自定义验证器中访问存储库 我试图将验证器声明为服务,并给出“@doctor.orm.default\u entity\u manager”参数 但是它当然不起作用,因为当我在实体中添加我的验证器作为注释时,我显然不会调用服务 有没有办法通过实体中的注释访问我的自定义验证器中的存储库以进行验证 use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\ConstraintV

我想知道是否有可能让实体管理器在自定义验证器中访问存储库

我试图将验证器声明为服务,并给出“@doctor.orm.default\u entity\u manager”参数

但是它当然不起作用,因为当我在实体中添加我的验证器作为注释时,我显然不会调用服务

有没有办法通过实体中的注释访问我的自定义验证器中的存储库以进行验证

use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator

class UniqueKeyValidator extends ConstraintValidator {
  public function validate($value, Constraint $constraint) {
    $entity = $this->context->getRoot()->getData();
    ... calling entity repository .....
  }
}
我的服务:

app.validator.unique:
    class: MyBundle\Validator\Constraints\UniqueKeyValidator
    arguments: ["@doctrine.orm.default_entity_manager"]
    tags:
        - { name: validator.constraint_validator }
是的,你可以。Symfony将在创建验证器实例时首先检查服务容器

只是你可能忘了添加合适的标签

Symfony文件中的示例:

services:
    validator.contains_alphanumeric:
        class: AppBundle\Validator\Constraints\ContainsAlphanumericValidator
        tags:
            - { name: validator.constraint_validator }
是的,你可以。Symfony将在创建验证器实例时首先检查服务容器

只是你可能忘了添加合适的标签

Symfony文件中的示例:

services:
    validator.contains_alphanumeric:
        class: AppBundle\Validator\Constraints\ContainsAlphanumericValidator
        tags:
            - { name: validator.constraint_validator }

你能发布你的验证器的代码吗?包括配置您可以发布验证器的代码吗?包含的配置即使与标记一起也不起作用:传递给UniqueKeyValidator的参数1::\uu construct()必须是条令\ORM\EntityManager的实例,none Given是否已添加了具有适当配置的
参数
属性以在服务配置中传递条令?我展示的Symfony文档中的示例不包含该内容。它只显示如何将验证器注册为服务。答案似乎存在,即使标记无效:传递给UniqueKeyValidator的参数1::\uu construct()必须是Doctrine\ORM\EntityManager的实例,none Given是否已添加具有适当配置的
参数
属性以在服务配置中传递原则?我展示的Symfony文档中的示例不包含该内容。它只显示了如何将验证器注册为服务