php - Symfony - 自定义验证器和依赖注入(inject)

标签 php symfony dependency-injection customvalidator

我正在尝试对自定义验证器使用依赖注入(inject),以便能够使用 entityManager。

我遵循了 Symfony 示例:Dependency Injection ,但我总是收到此错误消息:

FatalErrorException: Error: Class 'isdoi' not found in /home/milos/workspace/merrin3/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Validator/ConstraintValidatorFactory.php line 68

这是我的类(class):

<强>1。 IsDOI 类:

    <?php
    namespace Merrin\MainBundle\Validator\Constraints;
    use Symfony\Component\Validator\Constraint;

    /**
     * @Annotation
    */
    class IsDOI extends Constraint
    {
    public $message_publisher_DOI = 'The Publisher DOI abbreviation does not correspond to the DOI you filled in !';
    public $message_journal_DOI = 'No journal found with the DOI you filled in !';
    public $journal;
    public $doiAbbreviation;

     public function validatedBy() {
            return "isdoi";
        }

        public function getTargets()
        {
            return self::CLASS_CONSTRAINT;
        }
    }

<强>2。 IsDOIValidator 类:

<?php

namespace Merrin\MainBundle\Validator\Constraints;

use Doctrine\ORM\EntityManager;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
use Symfony\Component\DependencyInjection\ContainerBuilder;

class IsDOIValidator extends ConstraintValidator
{
    private $entityManager;

    public function __construct(EntityManager $entityManager)
    {
    $this->entityManager = $entityManager;
    }

    public function validate($value, Constraint $constraint)
    {       
        $em_mdpipub = $this->entityManager('mdpipub');
        //Do some tests here...

    }
}

<强>3。服务:

merrin.main.validator.isdoi:
    class:  Merrin\MainBundle\Validator\Constraints\IsDOIValidator
    arguments: 
        entityManager: "@doctrine.orm.entity_manager"

我哪里错了?感谢您的帮助。

最佳答案

你有错误的服务文件,当你添加标签和别名时你可以使用“isdoi”名称

merrin.main.validator.isdoi:
    class:  Merrin\MainBundle\Validator\Constraints\IsDOIValidator
    arguments: 
        entityManager: "@doctrine.orm.entity_manager"
    tags:
        - { name: validator.constraint_validator, alias: isdoi }

关于php - Symfony - 自定义验证器和依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17671384/

相关文章:

php - 使用 AJAX + PHP 插入 MySQL 数据库

Symfony2。使用数据 fixture 填充多对多连接表

java - 使用 Guice 为可重用组件注入(inject)不同的实例

javascript - 配置注释错误 : Argument 'fn' is not a function, 得到字符串

javascript - Angular 4 - 检测到循环依赖。两个组件导入了另一个组件的 .ts 文件

php - HTML 表单到 PHP 邮件无法正常工作

php - php中的周问题

symfony - Webpack Encore - $ 未定义

forms - 将 symfony2 表单标签制作成链接

php - 如何将 is_callable 与 __call 一起使用?