【发布时间】:2014-04-14 17:29:02
【问题描述】:
我希望有人能够帮助我,因为我一直在疯狂地试图让它工作。我在网上进行了无数次搜索并找到了一些信息,但不幸的是,我似乎无法找到解决方案。
我正在尝试使用多个模块在 Phalcon 中实现以下目标。
MasterController 扩展了 Controller
BackendController 扩展了 MasterController
ModuleController 扩展 BackendController
ClientsController 扩展了 ModuleController
我的文件夹结构是这样的:
应用程序
|->客户关系管理
|-->控制器
|--->模块控制器
|--->客户端控制器
常见
|->控制器
|-->主控制器
|-->后端控制器
现在在 CRM 下的 Modules.php 文件中,我有以下内容:
$loader->registerNamespaces(
array(
'Multiple\Crm\Controllers' => __DIR__ . '/controllers/',
'Multiple\Crm\Models' => __DIR__ . '/models/',
'Multiple\Crm\Plugins' => __DIR__ . '/plugins/',
'Multiple\Common\Controllers' => __DIR__ . '/../../common/controllers/'
)
);
我的 ModuleController 文件如下所示:
class ModuleController extends Multiple\Common\Controllers\BackendBase
{
public function onConstruct()
{
echo "hello";
}
}
每当我运行代码时,都会遇到以下致命错误:
致命错误:在第 8 行的 /var/www/phalcon/html/apps/crm/controllers/ModuleController.php 中找不到类“Mulitple\Common\Controllers\BackendBase”
我尝试了很多东西,但我似乎无法让它发挥作用。谁能对此有所了解并告诉我我做错了什么?
非常感谢。
【问题讨论】:
-
您确定需要多模块应用吗?如果您是 Phalcon 的新手,我建议您从单个模块应用程序开始。但是,如果您确实需要应用程序模块,请查看this repo,您可以在那里找到一些使用应用程序模块的结构示例。关于您的命名空间控制器in this answer,您可能会发现一些有用的信息。
-
还要检查你的路径。 ../../ 有时并不是最好的方法。我通常设置一个 ROOT_PATH 常量,它指向我的应用程序的顶部,然后用它设置路径。
-
@cvsguimaraes:是的,我确实需要一个多模块应用程序。我正在尝试将现有系统转换为 Phalcon。我已经检查了您的第二个链接并选择了 registeringClasses,因为在这种情况下我只需要两个。我将继续使用这种方法,看看我能到达哪里。感谢您的帮助。
-
@NikolaosDimopoulos:感谢您的提示。我想我会设置一个 ROOT_PATH 常量并使用它,因为它会使事情更容易理解。我确实检查了路径,并确定它工作正常。我认为这是自动加载器没有从我在 registerNamespace 中使用的文件夹中获取文件的情况。也感谢您的帮助。
-
@rabrowne 看看这个github.com/phalcon/website/blob/master/public/index.php#L8 和这个github.com/phalcon/website/blob/master/app/var/config/… 这些来自PhalconPHP的官方网站
标签: php inheritance controllers phalcon