Я создал избирателя, где мне нужно вызвать is_granted для пользователя.symfony2 call is_granted в избирателе: как избежать бесконечного цикла?
При внутривенном введении службы security.authorization_checker в моем избирателе я получаю следующую ошибку
ServiceCircularReferenceException в CheckCircularReferencesPass.php линия 69: Циклическая ссылка обнаружено для обслуживания "manager_voter", пути: «manager_voter -> security.authorization_checker -> security.access.decision_manager -> manager_voter ".
Нет ли альтернативы инъекции всего контейнера? Это нормально?
EDIT:
Я зову избиратель от контроллера:
if (false === $this->get('security.authorization_checker')->isGranted('manage', $associate)) {
throw new AccessDeniedException('Unauthorised access!');
}
В этом избирателе мне нужно проверить роли пользователя:
if ($this->container->get('security.authorization_checker')->isGranted('ROLE_COMPANY_MANAGER'))
{
return true;
}
Что, конечно, приводит к петля. Как не получить этот цикл? Вызов $ user-> getRoles на пользователя не будет учитывать иерархию ролей, если я не ошибаюсь.
может быть, вы также должны показать код, которая создает ошибку. –
@AaronHall: код добавлен. Я не вижу, как вызвать is_granted без бесконечного цикла. –
'if ($ this -> $ container-> get' это' '' в контейнере опечатка? –