0
我想注入一個實體管理器對象介紹我的驗證類,但是Symfony DI注入一個空數組(用var_dump測試)。我不明白爲什麼這不起作用。這裏有一些我的代碼。Symfony DI注入一個空數組而不是實體管理器對象
應用程序/ 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。代碼有問題嗎?
如果用'ConstraintValidator'擴展'UniqueBookingDate'會怎麼樣? – Nevertheless 2014-11-21 08:30:06
@ Grimv01k我仍然有同樣的問題。似乎validator.constraint_validator標記沒有正確註冊我的自定義驗證程序,因爲我能夠通過注入了實體管理器的id獲取服務。 – dextervip 2014-11-21 08:41:54
看起來你確實通過services.yml傳遞了一個空數組。我會嘗試重現,但也許定義orm就像'arguments:[@ doctrine.orm.entity_manager]'會做些什麼? – Nevertheless 2014-11-21 08:45:34