Я пытаюсь создать валидатор, который будет проверять базу данных для некоторых значений. Для этого мне нужно ввести внутри службы entityManager и дать псевдоним моему методу проверки, как описано в официальной документации Symfony.Symfony2 Custom Validator с EntityManager не работает
Проблема заключается в том, что после того, как делать все по книге, которую я все еще получаю ошибку о том, что EntityManager равна нулю:
Catchable Fatal Error: Argument 1 passed to XXX\CommonBundle\Validator\Constraints\IsSingleEntryValidator::__construct() must be an instance of Doctrine\ORM\EntityManager, none given, called in /var/www/XXX/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Validator/ConstraintValidatorFactory.php on line 71 and defined
Моя служба:
XXX.validators.is_single_entry:
class: XXX\CommonBundle\Validator\Constraints\IsSingleEntryValidator
arguments:
- "@doctrine.orm.default_entity_manager"
tags:
- { name: validator.constraint_validator, alias: single_entry_validation }
А класс валидатора:
class IsSingleEntryValidator extends ConstraintValidator
{
/**
* @var EntityManager
*/
protected $em;
/**
* Constructor
*
* @param EntityManager $em
*/
public function __construct(EntityManager $em)
{
$this->em = $em;
}
public function validate($value, Constraint $constraint)
{
...
}
public function validateBy()
{
return 'single_entry_validation';
}
}
И использование валидатора:
/**
* @ORM\Column(name="is_primary", type="boolean", nullable=true)
* @SiteAssert\IsSingleEntry(message="validator.single.entry")
*/
protected $isPrimary;
Моя EntityManager зависимость называется '@ doctrine.orm.entity_manager' ... запустить' контейнер: команду debug' на консоли и убедитесь, что ваша называется 'doctrine.orm.default_entity_manager'. Если это не окажется проблемой, я так же застрял, как и ты - выглядит совершенно иначе. – Ragdata
Вы пытались очистить кеш и перезапустить php? – jcroll