以下代码在我的FrontController
. run 方法应该调用属于给定 url 的控制器操作。例如http://localhost/admin/index
应该指向AdminController
and indexAction
。
这已经有效,但是调用其他控制器操作的最佳方式是什么,例如用于构建我的网站导航的操作或带有一些信息的边栏(不在网站的主要部分中)。每个请求都需要导航,因此实现起来没有问题,但是当我必须调用一些依赖于主要操作的操作时,如何构建它?
我的第一种方法是用两种方法调用其他控制器操作,例如runBeforeMainController
or 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
}