«Модуль администратора» берет на себя фреймворк Yii
Вопрос
У меня есть модуль «администратора», и я хочу, чтобы он обслуживал «динамические контроллеры», т.е.чтобы обеспечить поведение по умолчанию для контроллеров, которых на самом деле не существует («виртуальные контроллеры»).
Я изобрел облегченный механизм обмена сообщениями для свободной связи между модулями.Я хотел бы использовать его так, чтобы, например,
?r=admin/users/index
запрашивается, он вызывает «виртуальный контроллер» «UserController» AdminModule, который по умолчанию будет использовать этот механизм обмена сообщениями для уведомления реального модуля «UsersModule», который может ответить на запрос.
Я думал о моделировании этого поведения в AdminModule::init(), но на тот момент у меня не было возможности решить, может ли действие быть обработано реальным контроллером или нет, или, по крайней мере, я не знаю, как это сделать.
Это связано с тем, как работает Yii:снизу вверх, например, контроллер — это тот, который отображает представление И макет приложения (или модуля, если он существует).Я не думаю, что модуль вообще может сказать слово об обработке данного контроллера + действия или нет.
Подводя итог, я ищу своего рода CWebModule::missingController($controllerId,$actionId), точно так же, как CController::missingAction($actionId), или обходной путь для его имитации.
Возможно, это будет в CWebModule::init() или где-то еще, где я могу это узнать.
- существует ли контроллер на самом деле, и в этом случае его работа — справиться с ним
- $actionID и $controllerID
- существует ли модуль $controllerID (я не ошибся, в r=admin/users/index «пользователи» — это фактический модуль, как указано в конфигурации приложения).