【发布时间】:2014-11-12 10:00:59
【问题描述】:
我正在设置一个多模块应用程序,到目前为止,我已经像这个例子一样设置它http://docs.phalconphp.com/en/latest/reference/applications.html。
但我在徘徊,是否有可能共享后端和前端控制器都从其扩展的基本控制器。这样我就可以在基本控制器中拥有一个 ACL。我该如何设置?
根据文档,我可以在任何地方创建一个控制器库,然后直接在引导文件中需要这个文件,或者使用任何自动加载器加载。所以我创建了一个名为 apps/shared/controllers/ControllerBase.php 的文件夹,并直接在引导文件中需要这个文件,但这不起作用。
如果我尝试像这样加载控制器:
class AdminController extends ControllerBase
{
public function indexAction()
{
echo "<h1>Hello admin!</h1>";
}
}
我收到一个错误......Backend\Controllers\ControllerBase' not found in......
那么如何根据文档使用任何自动加载器进行加载?我是否需要将其注册为自己的命名空间或其他东西?
【问题讨论】:
-
AdminController在哪里,AdminController的命名空间是什么? -
当您说您在引导程序中包含文件时,您是直接包含该文件,还是您在配置部分中为自动加载提供目录位置?
-
使用 require 直接将文件包含在引导程序中。如果有帮助,我会在回家后发布文件结构。
-
我现在也遇到了同样的问题。这是由于每个模块中 Module.php 上的方法 registerAutoloaders 所致。在它上面我们定义了一个新的自动加载器,它重载了之前的并且使你所有其他注册的命名空间无效。不知道如何避免它。如果我发现了什么,我会尽力回答。
-
谢谢,让我知道你过得怎么样。