service = $service; } /** * {@inheritdoc} */ public function validate($value, Constraint $constraint) { if (!$constraint instanceof Role) { throw new UnexpectedTypeException($constraint, __NAMESPACE__ . '\Role'); } $roles = $value; if (!is_array($roles)) { $roles = [$roles]; } // the fos user entity uppercases the roles by default $allowedRoles = array_map('strtoupper', $this->service->getAvailableNames()); foreach ($roles as $role) { if (!is_string($role) || !in_array($role, $allowedRoles)) { $this->context->buildViolation($constraint->message) ->setParameter('{{ value }}', $this->formatValue($role)) ->setCode(Role::ROLE_ERROR) ->addViolation(); } } } }