· 8 years ago · Nov 28, 2017, 06:10 AM
1namespace AppBundleValidatorConstraints;
2
3use SymfonyComponentValidatorConstraint;
4
5/**
6 * @Annotation
7 */
8class EmailDomain extends Constraint
9{
10 public $domains;
11 public $message = 'The email "%email%" has not a valid domain.';
12}
13
14namespace AppBundleValidatorConstraints;
15
16use SymfonyComponentValidatorConstraint;
17use SymfonyComponentValidatorConstraintValidator;
18
19class EmailDomainValidator extends ConstraintValidator
20{
21 public function validate($value, Constraint $constraint)
22 {
23 $explodedEmail = explode('@', $value);
24 $domain = array_pop($explodedEmail);
25
26 if (!in_array($domain, $constraint->domains)) {
27 $this->context->buildViolation($constraint->message)
28 ->setParameter('%email%', $value)
29 ->addViolation();
30 }
31 }
32}
33
34use SymfonyComponentValidatorConstraints as Assert;
35use AppBundleValidatorConstraints as CustomAssert;
36
37class MyEntity
38{
39 /**
40 * @AssertEmail()
41 * @CustomAssertEmailDomain(domains = {"yahoo.com", "gmail.com"})
42 */
43 protected $email;
44
45- AppBundleValidatorConstraintsEmailDomain:
46 domains:
47 - yahoo.com