以下代码位于我的FrontController
。 run方法应该调用属于给定url的控制器动作。例如,http://localhost/admin/index
应指向AdminController
和indexAction
。
这已经有效,但是调用其他控制器操作的最佳方法是什么,例如用于构建我的站点导航或旁边框(不在站点的主要部分中)的操作和一些信息。每次请求都需要导航,因此实现这没有问题,但是当我必须调用一些取决于主要操作的操作时,如何构造它?
我的第一种方法是使用runBeforeMainController
或runAfterMainController
两种方法调用其他控制器操作。全局配置保存主控制器的信息,在主控制器调用之前或之后需要调用子控制器(操作)。
我的第二种方法是考虑一个钩子/事件系统。但我没有得到很好的理论解决方案。您对此方法有什么建议或建议吗?
// in FrontController
public function run() {
$strController = static::getControllerNameFromUrl();
$strAction = static::getActionNameFromUrl();
// call actions before main controller
$this->template->main = $this->callMainControllerAction($strController, $strAction);
// call actions after main controller
}
答案 0 :(得分:1)
我认为HMVC正是您所寻找的。 H代表分层。基本上你使用多个mvc构造。您的网站变得更加模块化,一个请求可能会导致不同的操作。
Afaik已经有一些PHP框架使用这种方法。