我正在考虑从indexController扩展我的所有控制器。我在索引控制器中有一个init()函数,可以执行很多东西。这不会在fooController请求时执行。
我已经注册了一个viewSetup插件。这是在所有请求上执行的,那很好。
我的问题是有一个博客模块需要做一些事情,不需要在新闻模块中完成。
一个很好的例子是我的二级菜单,它特定于活动模块。
class fooController extends indexController
这样我也可以在fooController中覆盖indexController中的init()函数。不幸的是,自动加载器找不到indexController类。
以下是有效的,如果我首先需要indexController.php文件
<?php
require_once('indexController.php);
class fooController extends indexController {
function init() {
parent::init();
// Do changes to, ie. setup controller specific menu, or add menu items.
}
}
非常感谢的想法:)
答案 0 :(得分:1)
这似乎是action helper的情况。您可以将常用功能打包到这样的帮助程序中,并在每个控制器的基础上(在init()
方法中)或每个操作的基础上调用它。
答案 1 :(得分:0)
可能的解决方案,取决于您想做什么:
在这种情况下看起来控制器插件是最好的(因为你已经在使用一个), 但你只需要为它添加一些条件,例如仅在请求特定模块,控制器和操作时执行代码。