У меня есть модуль «admin», и я хочу, чтобы он обслуживал «динамические контроллеры», то есть для обеспечения поведения по умолчанию для контроллеров, которые на самом деле не существуют («виртуальные контроллеры»).
Я изобрел легкий механизм обмена сообщениями для слабой связи между модулями. Я хотел бы использовать его так, чтобы, например,
?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 «users» - это фактический модуль, как указано в конфигурации приложения).