I'm trying to validate a field "email" in a signup form. I don't want duplicate emails. For this I need to use Doctrine inside my custom validator. I know I have to define this dependency as a service in the DI container.
After reading some doc I couldn't yet. I have this now:
Validation.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;
}
...
I'm stuck, anything would help me (example in internet or whatever)...thanks!