我希望有人能够帮助我,因为我一直有点疯狂试图让它发挥作用。我已经在网上进行了大量搜索并找到了一些信息,但不幸的是,我似乎无法找到解决方案。
我正在尝试使用多个模块在Phalcon中实现以下功能。
MasterController扩展了控制器
BackendController扩展了MasterController
ModuleController扩展了BackendController
ClientsController扩展了ModuleController
我拥有的文件夹结构是:
应用
| - > CRM
| - >控制器
| ---> ModuleController
| ---> ClientsController
常见
| - >控制器
| - > MasterController
| - > BackendController
现在在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'
我尝试了很多东西,但我似乎无法让它发挥作用。谁能对此有所了解并告诉我我做错了什么?
非常感谢提前。
答案 0 :(得分:1)
在审核了@cvsguimaraes和@NikolaosDimoploulos的评论之后,我选择了#34;再次开始#34;。我使用phalcon devtools使用apps选项生成结构的基础。
基于此,我随后能够构建"从那里开始的结构。
为了获得继承权,我在此之后就是我的最终目标:
#File: apps/crm/controllers/ClientsController.php
namespace myApp\CRM\Controllers
class ClientsController extends ControllerBase {...}
#File: apps/crm/controllers/ControllerBase.php
namespace myApp\CRM\Controllers
class ControllerBase extends \myApp\common\Controllers\FrontendBase {...}
#File: common/controllers/FrontendBase.php
namespace myApp\common\Controllers
class FrontendBase extends \myApp\common\Controllers\MasterBase {...}
#File: common/controllers/MasterBase.php
namespace myApp\common\Controllers
class MasterBase extends \Phalcon\Mvc\Controller {...}
然后在文件中:apps / crm / Module.php我有以下内容:
namespace myApp\CRM;
class Module implements ModuleDefinitionInterface
{
public function registerAutoloaders()
{
$loader = new Loader();
$loader->registerNamespaces(array(
'myApp\CRM\Controllers' => __DIR__ . '/controllers',
'myApp\CRM\Models' => __DIR__ . '/models',
'myApp\common\Controllers' => __DIR__ . '/../../common/Controllers',
'myApp\common\Models' => __DIR__ . '/../../common/Models'
));
$loader->register();
}
}
然后按预期工作。您可以在MasterBase中拥有可以从更高级别调用的函数,还可以运行诸如将css和JS添加到不同级别的输出之类的函数,允许您根据需要分离控件。