Рейтинг:0

Отменить проверку доступа, но также передать управление обратно основному контроллеру при определенных условиях?

флаг cn

Я использую contrib контроллер, который имеет _custom_access функция, которую мне нужно переопределить.

Я добавляю RouteSubscriber и указываю проверку доступа на свой собственный контроллер. Теперь я хочу что-то вроде:

если ($ условие) {
  вернуть $new_access_decision;
}
вернуть $original_controller->accessCheck()

поэтому я могу продолжать полагаться на исходную логику в большинстве случаев и просто переопределять для небольшого подмножества случаев.

Я не знаю, как внедрить исходный контроллер в мою шахту, и если я попытаюсь добавить его в качестве параметра в службу RouteSubscriber, я получу

имеет зависимость от несуществующей службы [исходный контроллер]

что я считаю означающим, что контроллеры не являются службами.

Рейтинг:1
флаг cn

Введите class_resolver как обычную услугу, а затем позвоните

$this->class_resolver->getInstanceFromDefinition('\Drupal\example\ExampleController');
4uk4 avatar
флаг cn
Обычно вам не нужны два экземпляра, если есть способ ООП, расширяющий класс и создающий экземпляр только нового класса, который может при необходимости вызывать родительский метод. Вам нужны только два экземпляра, если они имеют разные состояния.
флаг cn
Да, я думаю, несколько странный пограничный случай. Я полагаю, что мог бы решить проблему, расширив контроллер primart, но они довольно сильно отличаются друг от друга, и это унаследованный код, который я не очень хочу полностью переписывать.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.