我想建立一個驗證器,將檢查數據庫的一些值。爲此,我需要在服務中注入entityManager,並給我的Validation方法提供一個別名,如Symfony官方文檔中所述。Symfony2自定義驗證與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' ...運行'容器被稱爲'doctrine.orm.default_entity_manager'。如果這不是問題,那麼我就像你一樣卡住 - 否則看起來很完美。 – Ragdata
您是否嘗試清除緩存並重新啓動php? – jcroll