phalcon:整合官方多模块功能,方便多表查询

项目分为:

namespace Multiple\Backend;
namespace Multiple\Frontend;

目录结构如下:

public/index.php的大致写法:

多模块功能:

// Handle the request
    $application = new Application($di);
    //加入模块分组配置
    $application->registerModules(
        array(
            ‘frontend‘ => array(
                ‘className‘ => ‘Multiple\Frontend\Module‘,
                ‘path‘      =>  ‘../app/frontend/Module.php‘,
            ),
            ‘backend‘  => array(
                ‘className‘ => ‘Multiple\Backend\Module‘,
                ‘path‘      => ‘../app/backend/Module.php‘,
            )
        )
    );

  

来看下多模块下Module.php的写法,

backend/Module.php

namespace Multiple\Backend;

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

class Module implements ModuleDefinitionInterface {

    public function registerAutoloaders( DiInterface $di = NULL)
    {
        $loader = new Loader();
        $loader->registerNamespaces(array(
            ‘Multiple\Backend\Controllers‘ => __DIR__ .‘/controllers/‘
        ))->register();
        $loader->registerDirs(
            array(
                ‘modelsDir‘      => ‘../app/models/‘, #注意这里,必须填写,否则models/下的文件不能共用。
            )
        )->register();

    }

    public function registerServices( \Phalcon\DiInterface $di)
    {
        $di->set("dispatcher", function(){
            $dispatcher = new Dispatcher();
            $dispatcher->setDefaultController("Multiple\Backend\Controllers");
            return $dispatcher;
        });

        $di->set("view", function(){
            $view = new View();
            $view->setViewsDir("../app/backend/views/");
            $view->registerEngines(array(
                ‘.phtml‘ => ‘Phalcon\Mvc\View\Engine\Php‘
            ));
            return $view;
        });

    }
}

  

models/下的model文件,不需要命名空间,直接写:

use \Phalcon\Mvc\Model;
class Album extends Model {
  ......

}

controllers/下面的model调用:

namespace Multiple\Backend\Controllers;
use Phalcon\Paginator\Adapter\QueryBuilder as PaginatorQueryBuilder;
class AlbumController extends ControllerBase {

    public function initialize(){
        parent::initialize();
    }

    public function indexAction()
    {

        $currentPage = $this->getParam(‘page‘);
        $builder = $this->modelsManager->createBuilder()
            ->columns("aid,atid,name,mid,nid,create_time")
            ->from("Album")
            ->where("enable = 0")
            ->orderBy("aid ASC");

        $paginator = new PaginatorQueryBuilder(array(
            ‘builder‘ => $builder,
            ‘limit‘ => 10,
            ‘page‘ => $currentPage
        ));
        $category = ‘‘;
        if( $this->getAlbumCategory() )
        {
            foreach($this->getAlbumCategory() as $k=>$v)
            {
                $category[$v[‘atid‘]] = $v;
            }
        }

}

  

  

时间: 2024-08-25 19:31:54

phalcon:整合官方多模块功能,方便多表查询的相关文章

phalcon:官方多模块支models层,mode数据库配置(二)

利用:\pahlcon\mvc\model\Manager::registerNamespaceAlias()方法获取多模块下的model层 public/index.php use Phalcon\Mvc\Model\Manager as ModelsManager; //对模型进行别名处理 $di->set('modelsManager', function() { return new ModelsManager(); }); model层,我的命名空间是: namespace App\M

about家庭智能设备部分硬件模块功能共享【协同工作】solution

本人设备列表: Onda tablet {Android} wifi Desktop computer {win7.centos7} 外接蓝牙adapter PS interface 键盘.鼠标{与同局域网laptop通过synergy软件共享,使其成为共享的输入设备} 3.5mm interface低音炮{通过Bluetooth连接laptop,从而让laptop也可以使用该声音输出设备} 250G硬盘,通过在linuxcentos上搭建NFSNetwork File System,使其硬盘资

Struts2 整合jQuery实现Ajax功能(1)

技术领域很多东西流行,自然有流行的道理,这几天用了jQuery,深感有些人真是聪明绝顶,能将那么多技术融合的如此完美. 首先明确个概念: jQuery是什么:是使用javascript语言开发的,用于满足项目前台各种操作需要的js程序文件.也就是说,jQuery基本上就是个js程序集,基础核心是jQuery.js文件. l        当然根据不同的版本具体的表现形式: jQuery.1.6.js或者jquery-1.5.1.js 这个是版本号的不同,具体有哪些区别,还没发现. l      

ztree使用系列二(整合ztree的一些功能和demo演示)

ztree官网上有详细的API和演示demo,这里就不详细介绍了,只对用到的一些功能进行说明一下. 1.用到的几个js文件 jquery-1.4.4.min.js(jQuery的核心js) jquery.ztree.core-3.5.js(ztree的核心js) jquery.ztree.excheck-3.5.js(ztree的复选框功能js) jquery.ztree.exedit-3.5.js(ztree的编辑功能js) 2.用的css文件 zTreeStyle.css(只有这一个css文

Winform开发框架中的内容及文档管理模块功能介绍

在开发项目的时候,我们有一些场景需要编辑一些HTML文档,作为内容发布系统的一部分,有时候也需要对一些文档如WORD文档进行编辑管理,这样需要我们对这些内容及文档进行合适的管理.本文主要介绍在WInform项目中利用ZetaHtmlEditControl进行HTML内容管理,以及利用TX TextControl控件进行WORD文档管理,这两方面都是我们一般进行内容和文档管理所必须的. 1.内容及文档管理模块功能介绍 整个模块,支持WInform框架和混合式开发框架两种模式,都是基于WInform

Struts2 整合jQuery实现Ajax功能(2)

1.1.1   Action利用struts2-json-plugin-X.X.X.jar响应Json格式信息: 1.      function removerecordbyid(recordid){ 2.              $("#showallrecord table tr").each( 3.              function(){ 4.                var seq=parseInt($( this ).children( "td&

菜鸟级springmvc+spring+mybatis整合开发用户登录功能(上)

菜鸟级springmvc+spring+mybatis整合开发用户登录功能(上) 菜鸟级springmvc+spring+mybatis整合开发用户登录功能(下)

(转)关于ES6的 模块功能 Module 中export import的用法和注意之处

关于ES6的 模块功能 Module 中export import的用法和注意之处 export default 的用法 export default命令用于指定模块的默认输出.显然,一个模块只能有一个默认输出,因此export deault命令只能使用一次.所以,import命令后面才不用加大括号,相反其它的export 输出 可以有多个,且import时必须加大括号,示例如下: 1 // modules.js 2 function add(x, y) { 3 return x * y; 4

第三方支付框架需求文档:其他模块功能细节

返回主目录 其他模块功能细节(特殊功能的详细需求与解决方案) 后期支持的支付方式: 1.微信:公众号支付.扫码支付.APP支付.H5支付 2.支付宝:电脑网站支付.手机网站支付.APP支付.当面付 通道风控解决方案: 1.多个通道 2.根据付款金额随机选择通道(小于付款金额) 3.通道异常短信通知平台方管理员(平台负责人,非客服),同时关闭该支付通道 充值未到账订单号(用户异议充值订单)查询解决方案: 1.尽量不采用平台订单号 2.根据支付宝/微信订单号进行查询 3.商户后台也同样拥有属于自己订