Пользовательский валидатор не вызывает @service_container

0

Версия для Symfony: 2.5

ошибка

"Catchable Fatal Error: аргумент 1, переданный Intermedius\UserBundle\Validator\Constraints\RegisteredEmailValidator :: __ construct() должен реализовать интерфейс Symfony\Component\DependencyInjection\ContainerInterface, не указанный в D:\Projektek\pricing_tool\backend\vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\Validator\ConstraintValidatorFactory.php в строке 71 и определен в D:\Projektek\pricing_tool\backend\src\Intermedius\UserBundle\Validator\Constraints\RegisteredEmailValidator.php строка 22 "

RegisteredEmail.php

 class RegisteredEmail extends Constraint
 {
    public $message = "MSG";
 }

RegistereEmailValidator.php

class RegisteredEmailValidator extends ConstraintValidator{
    public $containerInterface;

     function __construct(ContainerInterface $containerInterface)
     {
          $this->containerInterface = $containerInterface;
     }


     public function validate($value, Constraint $constraint)
     {

        if (!$constraint instanceof RegisteredEmail) {
           throw new UnexpectedTypeException($constraint, __NAMESPACE__ . '\RegisteredEmail');
     }

   }



   public function validateBy()
   {
       return "registered_email";
   }
}

services.yml

services:
  intermedius.user.validator.registered_email:
    class: Intermedius\UserBundle\Validator\Constraints\RegisteredEmail
    arguments: [ @service_container ]
    tags:
        - { name: validator.constraint_validator, alias: registered_email }
Теги:
service
customvalidator

2 ответа

0

Вы не должны вводить service_container в свои службы. В вашем примере вы должны скорее использовать только те сервисы, которые вам нужны. См. Например, раздел "Избегание вашего кода, зависящего от контейнера" в http://symfony.com/doc/current/components/dependency_injection.html.

0

Класс определения вашего валидатора должен быть установлен в класс проверки, а не ограничение.

class: Intermedius\UserBundle\Validator\Constraints\RegisteredEmailValidator
  • 0
    все равно не работает, та же ошибка
  • 0
    Каково пространство имен вашего класса RegisteredEmailValidator? а зачем вам сильно привязывать валидатор к контейнеру?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню