【发布时间】:2014-05-05 13:42:53
【问题描述】:
我正在尝试验证注册表单中的“电子邮件”字段。我不想要重复的电子邮件。为此,我需要在我的自定义验证器中使用 Doctrine。我知道我必须将此依赖项定义为 DI 容器中的服务。
在阅读了一些文档后,我还不能。我现在有这个:
验证.yml
...
properties:
email:
- NotBlank: ~
- Email: ~
- Cgboard\SignupBundle\Validator\Constraints\EmailDoesntExist: ~
...
config.yml
services:
validator.unique.EmailDoesntExist:
class: Cgboard\SignupBundle\Validator\Constraints\EmailDoesntExistValidator
tags:
- { name: validator.constraint_validator, alias: EmailDoesntExistValidator }
EmailDoesntExistValidator.php
...
public function validate($value, Constraint $constraint)
{
$em = $this->get('doctrine')->getEntityManager(); // save our entity in DB
$result = $em->getRepository('CgboardSignupBundle:User')->userExist($value);
if (empty($result)) {
return true;
}
$this->context->addViolation($constraint->message, array());
return false;
}
...
我被困住了,任何事情都会对我有所帮助(例如互联网或其他)...谢谢!
【问题讨论】:
标签: symfony