为Phalcon DevTools创建的多模块项目设置默认命名空间的正确位置是什么?

时间:2013-08-22 18:29:18

标签: phalcon

我本周刚开始关注Phalcon,我正在尝试使用开发工具创建一个多模块应用程序。

运行phalcon project <name> multiple的结果只会创建一个模块('前端')并且工作正常。但是,当我添加第二个模块时(通过复制前端并将命名空间更改为\ Backend,我无法访问Backend \ IndexController类。

阅读有关多个模块应用程序的文档页面并查看示例(https://github.com/phalcon/mvc/tree/master/multiplehttps://github.com/phalcon/mvc/tree/master/multiple-volt)以及Google小组上的旧问题后(抱歉,自此以后不能发布超过2个链接我是StackOverflow的新手,我已经结束了对services.php文件中这一行的评论:

$router->setDefaultNamespace("MyL\Frontend\Controllers"); //project name is MyL

并在我的后端/ Module.php文件的setServices上添加以下内容:

$di->set('dispatcher', function() {
                $dispatcher = new Dispatcher();
                $dispatcher->setDefaultNamespace("MyL\Backend\Controllers");
                return $dispatcher;
            });

和frontend / Module.php上类似的东西

它适用于这些修改,但我的问题是:这是最好的方法吗,还是有更好的方法?

提前致谢!

2 个答案:

答案 0 :(得分:1)

您需要在应用中注册模块,如下所示:

$app = new \Phalcon\Mvc\Application();

$app->registerModules(
    [
        'frontend' => [
            'className' => 'MyL\Frontend\Controllers',
            'path'      => '../apps/frontend/Module.php'
         ],
        'backend'  => [
            'className' => 'MyL\Backend\Controllers',
            'path'      => '../apps/backend/Module.php'
         ],
    ]
);

确保您已为每个模块准备好Module.php

答案 1 :(得分:0)

这是一种在没有模块的情况下在Phalcon项目中拆分前端和后端的简单方法: https://github.com/borzov/phalcon-templates