module - Phalcon 4 多模块后端未加载

标签 module backend phalcon

我在 Windows 中使用 php-7.4.1 Architecture-x64、phalcon - 4.0.2、psr - 0.7.0 并按照 ' https://docs.phalcon.io/4.0/en/application 的说明进行操作' 但问题是它总是渲染前端模块及其 View 。我无法找出我做错了什么?

[索引.php]

use Phalcon\Mvc\Router;
use Phalcon\Mvc\Application;
use Phalcon\Di\FactoryDefault;
$di = new FactoryDefault();
$di->set('router',function () {
        $router = new Router(false);
        $router->setDefaultModule('frontend');
        $router->add('/login',
            [
                'module'     => 'backend',
                'controller' => 'index',
                'action'     => 'index',
            ]
        );
        $router->add('/admin/products/:action',
            [
                'module'     => 'backend',
                'controller' => 'index',
                'action'     => 1,
            ]
        );

        return $router;
    }
);

$application = new Application($di);

$application->registerModules(
    [
        'frontend' => [
            'className' => \Multiple\Frontend\Module::class,
            'path'      => '../apps/frontend/Module.php',
        ],
        'backend'  => [
            'className' => \Multiple\Backend\Module::class,
            'path'      => '../apps/backend/Module.php',
        ],
    ]
);
try {
    $response = $application->handle($_SERVER["REQUEST_URI"]);
    $response->send();
} catch (\Exception $e) {
    echo $e->getMessage();
}

[后端模块]

<?php
namespace Multiple\Backend;
use Phalcon\Loader;
use Phalcon\Mvc\View;
use Phalcon\Di\DiInterface;
use Phalcon\Mvc\Dispatcher;
use Phalcon\Mvc\ModuleDefinitionInterface;
class Module implements ModuleDefinitionInterface
{
    public function registerAutoloaders(DiInterface $di = null)
    {
        $loader = new Loader();
        $loader->registerNamespaces(
            [
                'Multiple\Backend\Controllers' => '../apps/backend/controllers/',
                'Multiple\Backend\Models'      => '../apps/backend/models/',
            ]
        );
        $loader->register();

    }
    public function registerServices(DiInterface $di)
    {
        $di->set('dispatcher',function () {
                $dispatcher = new Dispatcher();
                $dispatcher->setDefaultNamespace('Multiple\Backend\Controllers');
                return $dispatcher;
            }
        );
        $di->set('view',function () {
                $view = new View();
                $view->setViewsDir('../apps/backend/views/');
                return $view;
            }
        );
    }
}

[索引 Controller ]

<?php
namespace Multiple\Backend\Controllers;
use Phalcon\Mvc\Controller;
class IndexController extends Controller
{
    public function indexAction()
    {
        return '<h1>Back Controller!</h1>';
    }
}

最佳答案

您是否也在前端模块中设置了命名空间?就像您在后端使用 registerAutoloaders 所做的那样。

关于module - Phalcon 4 多模块后端未加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59797854/

相关文章:

typescript - 对于可用于浏览器或节点的 Typescript 模块,我应该使用什么模块构建策略?

mysql - 安装mysql时出现问题?安装程序不会超出几个初始步骤吗?

java - 在java中创建自己的后端有意义吗?

php - 如何将 $_FILES 绑定(bind)到 Phalcon 表单?

java - 我可以将 org.eclipse.jdt.core 导入 Netbeans 吗?

search - ElasticSearch Play-1.2 模块在客户端模式下不起作用

php - 声明变量 MySQL

routes - Phalcon Micro 应用程序无法使用查询字符串正确路由

javascript - NodeJS 中的模块继承

azure - Terraform - Azure - 在哪里通过 terraform 为 Azure API 管理中的每个 api 操作指定后端 API?