Php EntityManager不工作的Symfony2自定义验证程序
我正在尝试构建一个验证器,它将根据数据库检查一些值。为此,我需要在服务中注入entityManager,并为我的验证方法提供一个别名,如Symfony官方文档中所述 问题是,在按照书中的所有内容进行操作之后,我仍然收到一个错误,即entityManager为null: 可捕获的致命错误:参数1传递给XXX\CommonBundle\Validator\Constraints\IsSingleEntryValidator::\uu构造必须是Doctrine\ORM\EntityManager的实例,未给定,在第71行的/var/www/XXX/vendor/symfony/symfony/src/symfony/Bundle/FrameworkBundle/Validator/ConstraintValidatorFactory.php中调用并定义 我的服务:Php EntityManager不工作的Symfony2自定义验证程序,php,validation,symfony,doctrine-orm,Php,Validation,Symfony,Doctrine Orm,我正在尝试构建一个验证器,它将根据数据库检查一些值。为此,我需要在服务中注入entityManager,并为我的验证方法提供一个别名,如Symfony官方文档中所述 问题是,在按照书中的所有内容进行操作之后,我仍然收到一个错误,即entityManager为null: 可捕获的致命错误:参数1传递给XXX\CommonBundle\Validator\Constraints\IsSingleEntryValidator::\uu构造必须是Doctrine\ORM\EntityManager的实例
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;
@Ragdata-条令.orm.default\u实体\u管理器条令\orm\EntityManager 我的代码中实际上有两个错误 validatedBy函数的调用 此函数应在IsSingleEntry类内调用,而不是在IsSingleEntryValidator内调用 方法名称应不同 我调用了validateBy方法,但是正确的函数名应该是validateBy 所以代码现在应该是这样的: IsSingleEntry IsSingleEntryValidator
我的EntityManager依赖项称为@doctor.orm.entity\u manager。。。在控制台上运行container:debug命令,并确保您的命令名为doctor.orm.default\u entity\u manager。如果这不是问题所在,我和你一样被卡住了——否则看起来很完美。你是否尝试过清除缓存并重新启动php?
class IsSingleEntry extends Constraint
{
public $message = "The value already exists in the database";
/**
* @return string
*/
public function validatedBy()
{
return 'single_entry_validation';
}
}
class IsSingleEntryValidator extends ConstraintValidator
{
/**
* @var EntityManager
*/
protected $em;
/**
* Construct
*
* @param EntityManager $em
*/
public function __construct(EntityManager $em)
{
$this->em = $em;
}
/**
* Validate
*
* @param mixed $value
* @param Constraint $constraint
*/
public function validate($value, Constraint $constraint)
{
$oActiveExists = $this->em->getRepository('DatabaseBundle:Languages')->findOneByIsPrimary(true);
if ($oActiveExists) {
$this->context->buildViolation($constraint->message)
->addViolation();
}
}
}