Symfony版本:2.5
Error
“可捕获的致命错误:传递给Intermedius \ UserBundle \ Validator \ Constraints \ RegisteredEmailValidator :: __ construct()的参数1必须实现接口Symfony \ Component \ DependencyInjection \ ContainerInterface,没有给定,在D:\ Projektek \ pricing_tool \ backend \ vendor中调用第71行的\ symfony \ symfony \ src \ Symfony \ Bundle \ FrameworkBundle \ Validator \ ConstraintValidatorFactory.php,在D:\ Projektek \ pricing_tool \ backend \ src \ Intermedius \ UserBundle \ Validator \ Constraints \ RegisteredEmailValidator.php第22行中定义
RegisteredEmail.php
class RegisteredEmail extends Constraint
{
public $message = "MSG";
}
RegistereEmailValidator.php
class RegisteredEmailValidator extends ConstraintValidator{
public $containerInterface;
function __construct(ContainerInterface $containerInterface)
{
$this->containerInterface = $containerInterface;
}
public function validate($value, Constraint $constraint)
{
if (!$constraint instanceof RegisteredEmail) {
throw new UnexpectedTypeException($constraint, __NAMESPACE__ . '\RegisteredEmail');
}
}
public function validateBy()
{
return "registered_email";
}
}
services.yml
services:
intermedius.user.validator.registered_email:
class: Intermedius\UserBundle\Validator\Constraints\RegisteredEmail
arguments: [ @service_container ]
tags:
- { name: validator.constraint_validator, alias: registered_email }
2 回答
验证器服务定义的类应设置为验证器类,而不是约束 .
您不应该在服务中注入
service_container
. 在您的示例中,您应该只注入您需要的服务 . 例如,参见http://symfony.com/doc/current/components/dependency_injection.html的"Avoiding your Code Becoming Dependent on the Container"部分 .