ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

phalconphp中的多模块MVC结构

2019-06-12 12:15:31  阅读:202  来源: 互联网

标签:php phalcon


嗨,我正在尝试为前端和后端实现多模块MVC,就像phalconphp documentations中那样.但我无法使其工作.大约一个小时但我真的无法理解问题出在哪里.

任何人都可以指导我如何为前端和后端的多模块mvc制作骨架.

我应该把Moudle.php放在前端和后端
还有什么我应该放在public / index.php中的bootstrap文件中
以及我需要的任何额外文件或信息.

解决方法:

GitHub上phalcon / mvc存储​​库中的代码将有所帮助.你可以在这里找到它:
https://github.com/phalcon/mvc/tree/master/multiple

更具体地说,您将对以下内容感兴趣:

https://github.com/phalcon/mvc/blob/master/multiple/public/index.php
https://github.com/phalcon/mvc/blob/master/multiple/apps/backend/Module.php

我倾向于在index.php中使用它:

$application = new \Phalcon\Mvc\Application($di);

// Register the installed modules
$application->registerModules(
    array(
        'web' => array(
            'className' => 'Apps\Web\Module',
            'path'      => '../apps/web/Module.php',
        )
    )
);

echo $application->handle()->getContent();

在我的Module.php中:

<?php

namespace Apps\Web;

use Phalcon\Loader;
use Phalcon\Mvc\Dispatcher;
use Phalcon\Mvc\View;
use Phalcon\Mvc\ModuleDefinitionInterface;

class Module implements ModuleDefinitionInterface
{

    /**
     * Register a specific autoloader for the module
     */
    public function registerAutoloaders()
    {

        $loader = new Loader();

        $loader->registerNamespaces(
            array(
                'Apps\Web\Controllers' => '../apps/web/controllers/',
            )
        );

        $loader->register();
    }

    /**
     * Register specific services for the module
     * @param \Phalcon\DI\FactoryDefault $di
     */
    public function registerServices($di)
    {
        //Registering a dispatcher
        $di->set(
            'dispatcher',
            function() use ($di) {
                $eventsManager = $di->getShared('eventsManager');
                $dispatcher = new Dispatcher();
                $dispatcher->setDefaultNamespace('Apps\Web\Controllers');
                $eventsManager->attach(
                    'dispatch:beforeException',
                    function($event, $dispatcher, $exception) use ($di) {
                        /* @var $dispatcher \Phalcon\Mvc\Dispatcher */
                        switch ($exception->getCode()) {
                            case Dispatcher::EXCEPTION_HANDLER_NOT_FOUND:
                            case Dispatcher::EXCEPTION_ACTION_NOT_FOUND:
                                $di->set('lastException', $exception);
                                $dispatcher->forward(
                                    array(
                                        'module' => 'web',
                                        'controller' => 'error',
                                        'action' => 'notFound',
                                    )
                                );
                                return false;
                            default:
                                $di->set('lastException', $exception);
                                $dispatcher->forward(
                                    array(
                                        'module' => 'web',
                                        'controller' => 'error',
                                        'action' => 'uncaughtException',
                                    )
                                );
                                return false;
                        }
                    }
                );
                $dispatcher->setEventsManager($eventsManager);
                return $dispatcher;
            }
        );
    }

}

希望这有帮助!

标签:php,phalcon
来源: https://codeday.me/bug/20190612/1225706.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有