【问题标题】:What is the correct place to set the Default Namespace for a Multiple Module project created with Phalcon DevTools?为使用 Phalcon DevTools 创建的多模块项目设置默认命名空间的正确位置是什么?
【发布时间】:2013-08-22 18:29:17
【问题描述】:

我这周刚开始研究 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;
            });

以及前端/Module.php 上的类似内容

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

提前致谢!

【问题讨论】:

    标签: phalcon


    【解决方案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

    【讨论】:

    • 感谢您的回答,抱歉耽搁了。我按照您的描述设置了模块,每个模块的 Module.php 就像开发工具生成它一样,但它不会让我进入后端控制器。
    • 您可能错过了路线,或者路线配置错误。
    • @SinisaValentic 你能解释一下我可能错过了哪条路线,以及如何以及在哪里正确配置它?
    【解决方案2】:

    下面是一个在 Phalcon 项目中拆分前端和后端的简单方法,无需模块: https://github.com/borzov/phalcon-templates

    【讨论】:

      猜你喜欢
      • 2013-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-25
      • 1970-01-01
      • 2021-05-02
      • 1970-01-01
      • 2013-06-04
      相关资源
      最近更新 更多