Я пытался реализовать промежуточное программное обеспечение перед действием для модуля в Drupal 8.x, следуя этому руководству из Symfony .Тем не менее, при получении переменной $controller
из события, это, кажется, всегда объект Closure
, который я не могу использовать instanceof
для идентификации контроллера.Я нашел 2 способа сделать это с некоторыми плюсами и минусами на каждом.
- Вместо того, чтобы получить контроллер из события, я могу получить запрос вместо этого, затем использовать
ControllerResolver
, чтобы получить контроллер,Это, кажется, дает мне правильный контроллер.Тем не менее, HttpKernel
ControllerResolver
, похоже, конфликтует с некоторыми внутренностями Drupal, что разрушает другие части Drupal.Что касается ControllerResolver
от Drupal, я не могу понять аргументы, которые должны быть переданы в конструкторы. - Используя PHP Reflection, я могу получить статические переменные
Closure
где находится объект контроллера.Тем не менее, я не знаю, является ли это единственным типом объекта, который может быть передан, что делает это решение рискованным.
Есть ли более идиоматический способ сделать это в Drupal?Что ты думаешь по этому поводу?