Я пытаюсь внедрить объект диспетчера сущностей в свой класс проверки, однако Symfony DI вводит пустой массив (проверено с помощью var_dump). Я не могу понять, почему это не работает. Вот часть моего кода.
приложение/config.yml
services:
unique_booking_date_validator:
class: MyCompany\Bundle\AppBundle\Domain\Validator\UniqueBookingDate
arguments:
- "@doctrine.orm.entity_manager"
tags:
- { name: validator.constraint_validator, alias: unique_booking_date }
Мои занятия
namespace MyCompany\Bundle\AppBundle\Domain\Validator;
use Symfony\Component\Validator\ConstraintValidator;
use Symfony\Component\Validator\Constraint;
/** @Annotation */
class UniqueBookingDate extends Constraint
{
protected $em;
public function __construct(\Doctrine\ORM\EntityManager $em)
{
$this->em = $em;
}
public function validatedBy()
{
return 'unique_booking_date';
}
...
}
Он возвращает это исключение:
Catchable Fatal Error: Argument 1 passed to MyCompany\Bundle\AppBundle\Domain\Validator
\UniqueBookingDate::__construct() must be an instance of Doctrine\ORM\EntityManager,
array given, called in C:\htdocs\booking-manager\vendor\doctrine\annotations\lib\Doctrine\
Common\Annotations\DocParser.php on line 794 and defined in C:\htdocs\booking-manager
\src\MyCompany\Bundle\AppBundle\Domain\Validator\UniqueBookingDate.php line 20
Я использую Symfony v2.5.7. Что-то не так с кодом?
UniqueBookingDate
с помощьюConstraintValidator
? - person Damaged Organic   schedule 21.11.2014arguments: [@doctrine.orm.entity_manager]
, что-то сделает? - person Damaged Organic   schedule 21.11.2014Applying the Validation Logic
есть такая ЭМ-инъекция, и она отлично работает. Может быть, даст вам подсказку... Из того, что я мог видеть, должен быть один класс, который расширяетConstraint
, и один классConstraintValidator
, в котором передается EM, и вашtags
также ожидаетvalidator.constraint_validator
. Если фатальный говорит, что массив пуст, то, вероятно, инъекция вconfig.yml
пропущена. Я надеюсь, что это поможет вам. - person Damaged Organic   schedule 21.11.2014