1

以下代码在我的FrontController. run 方法应该调用属于给定 url 的控制器操作。例如http://localhost/admin/index应该指向AdminControllerand indexAction

这已经有效,但是调用其他控制器操作的最佳方式是什么,例如用于构建我的网站导航的操作或带有一些信息的边栏(不在网站的主要部分中)。每个请求都需要导航,因此实现起来没有问题,但是当我必须调用一些依赖于主要操作的操作时,如何构建它?

我的第一种方法是用两种方法调用其他控制器操作,例如runBeforeMainControlleror 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
}
4

1 回答 1

1

我认为 HMVC 是您正在寻找的。H代表分层。基本上你正在使用多个 mvc 结构。您的网站变得更加模块化,一个请求可能会导致不同的操作。

Afaik 已经有一些 PHP 框架使用这种方法。

于 2014-02-11T20:26:12.133 回答