«Модуль администратора» берет на себя фреймворк Yii

StackOverflow https://stackoverflow.com/questions/2352411

  •  23-09-2019
  •  | 
  •  

Вопрос

У меня есть модуль «администратора», и я хочу, чтобы он обслуживал «динамические контроллеры», т.е.чтобы обеспечить поведение по умолчанию для контроллеров, которых на самом деле не существует («виртуальные контроллеры»).

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

?r=admin/users/index

запрашивается, он вызывает «виртуальный контроллер» «UserController» AdminModule, который по умолчанию будет использовать этот механизм обмена сообщениями для уведомления реального модуля «UsersModule», который может ответить на запрос.

Я думал о моделировании этого поведения в AdminModule::init(), но на тот момент у меня не было возможности решить, может ли действие быть обработано реальным контроллером или нет, или, по крайней мере, я не знаю, как это сделать.

Это связано с тем, как работает Yii:снизу вверх, например, контроллер — это тот, который отображает представление И макет приложения (или модуля, если он существует).Я не думаю, что модуль вообще может сказать слово об обработке данного контроллера + действия или нет.

Подводя итог, я ищу своего рода CWebModule::missingController($controllerId,$actionId), точно так же, как CController::missingAction($actionId), или обходной путь для его имитации.

Возможно, это будет в CWebModule::init() или где-то еще, где я могу это узнать.

  1. существует ли контроллер на самом деле, и в этом случае его работа — справиться с ним
  2. $actionID и $controllerID
  3. существует ли модуль $controllerID (я не ошибся, в r=admin/users/index «пользователи» — это фактический модуль, как указано в конфигурации приложения).
Это было полезно?
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top