【发布时间】:2016-01-13 02:46:13
【问题描述】:
我正在尝试构建一个验证器来检查数据库中的某些值。为此,我需要在服务中注入 entityManager 并为我的 Validation 方法提供别名,如 Symfony 官方文档中所述。
问题是,在按书完成所有操作后,我仍然收到一条错误消息,提示 entityManager 为空:
可捕获的致命错误:传递给 XXX\CommonBundle\Validator\Constraints\IsSingleEntryValidator::__construct() 的参数 1 必须是 Doctrine\ORM\EntityManager 的实例,没有给出,在 /var/www/XXX/vendor/ 中调用symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Validator/ConstraintValidatorFactory.php 在第 71 行并定义
我的服务:
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';
}
}
以及validator的使用:
/**
* @ORM\Column(name="is_primary", type="boolean", nullable=true)
* @SiteAssert\IsSingleEntry(message="validator.single.entry")
*/
protected $isPrimary;
【问题讨论】:
-
我的 EntityManager 依赖项称为
@doctrine.orm.entity_manager... 在您的控制台上运行container:debug命令并确保您的依赖项称为doctrine.orm.default_entity_manager。如果这不是问题所在,我和你一样陷入困境 - 否则看起来很完美。 -
您是否尝试过清除缓存并重新启动 php?
标签: php validation symfony doctrine-orm