0

我有一个“管理”模块,我希望它为“动态控制器”服务,即为实际上不存在的控制器(“虚拟控制器”)提供默认行为。

我发明了一种轻量级的消息传递机制,用于模块之间的松散通信。我想这样使用它,例如

?r=admin/users/index

被请求时,它会调用 AdminModule 的“虚拟控制器”“UserController”,默认情况下,它会使用这种消息传递机制来通知它可以响应请求的真实模块“UsersModule”。

我考虑过在 AdminModule::init() 中模拟这种行为,但那时我无法确定该动作是否可以由真实控制器处理,或者至少我不知道该怎么做。

这是因为 Yii 的工作方式:自下而上,控制器是渲染视图和应用程序布局(或模块,如果存在)的控制器。我认为该模块甚至没有关于处理给定控制器+动作的说法。

回顾一下,我正在寻找一种 CWebModule::missingController($controllerId,$actionId),就像 CController::missingAction($actionId) 一样,或者是一种模拟它的解决方法。

那可能在 CWebModule::init() 或我能找到的地方

  1. 控制器是否实际存在,在这种情况下,处理它是他的工作
  2. $actionID 和 $controllerID
  3. 模块 $controllerID 是否存在(我没有输入错误,在 r=admin/users/index 中,“users”是实际模块,在应用程序的配置中指定)。
4

1 回答 1

0

我找到了一个解决方案http://www.yiiframework.com/forum/index.php?/topic/7569-admin-module-taking-over/page__view__findpost__p__38399

于 2010-03-08T09:47:03.023 回答