phalcon: 官方多模块
目录结构如下
public/index.php:
use Phalcon\Mvc\Router;
use Phalcon\Tag;
use Phalcon\Mvc\Url;
use Phalcon\Mvc\View;
use Phalcon\Mvc\Application;
use Phalcon\DI\FactoryDefault;
use Phalcon\Db\Adapter\Pdo\Mysql as DbAdapter; // Create a DI
$di = new FactoryDefault(); $di->set('router', function () { $router = new Router(); $router->setDefaultModule("frontend"); $router->setDefaults(array(
"namespace" => 'Multiple\Frontend\Controllers',
"controller" => "Index",
"action" => "index"
));
//frontend
$router->add("/:controller", array(
'module'=>'frontend',
'controller' => 1,
));
$router->add("/:controller/:action", array(
'module'=>'frontend',
'controller' => 1,
'action' => 2,
));
$router->add("/:controller/:action/:param", array(
'module'=>'frontend',
'controller' => 1,
'action' => 2,
'param' => 3,
));
//backend
$router->add("/admin/:controller", array(
'module'=>'backend',
'namespace'=>'Multiple\Backend\Controllers', // 一定要加上,要不然找不到后台
'controller' => 1,
));
$router->add("/admin/:controller/:action", array(
'module'=>'backend',
'namespace'=>同上,
'controller' => 1,
'action' => 2,
));
$router->add("/admin/:controller/:action/:param", array(
'module'=>'backend',
'namespace'=>同上,
'controller' => 1,
'action' => 2,
'param' => 3,
)); return $router;
}); try { $di['db'] = function(){
return new DbAdapter(array(
"host" => "localhost",
"username" => "root",
"password" => "",
"dbname" => "demo",
"charset" => "utf8"
));
}; // Setup a base URI so that all generated URIs include the "tutorial" folder
$di['url'] = function() {
$url = new Url();
$url->setBaseUri('/');
return $url;
}; // 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',
)
)
);
echo $application->handle()->getContent();
} catch (Exception $e) {
echo "Exception: ", $e->getMessage();
}
frontend/module.php(backend/module.php的配置跟它的雷同):
<?php
namespace Multiple\Frontend; use Phalcon\Loader,
Phalcon\Mvc\Dispatcher,
Phalcon\Mvc\View,
Phalcon\Mvc\ModuleDefinitionInterface; class Module implements ModuleDefinitionInterface { public function registerAutoloaders( \Phalcon\DiInterface $di = NULL)
{
$loader = new Loader();
$loader->registerNamespaces(array(
'Multiple\Frontend\Controllers' => __DIR__ . '/controllers/',
'Multiple\Models' => __DIR__ . '/../models/'
))->register();
$loader->registerDirs(
array(
'modelsDir' => '../app/models/',
)
)->register(); } public function registerServices( \Phalcon\DiInterface $di)
{
$di->set("dispatcher", function(){
$dispatcher = new Dispatcher();
$dispatcher->setDefaultController("Multiple\Frontend\Controllers");
return $dispatcher;
}); $di->set("view", function(){
$view = new View();
$view->setViewsDir("../app/frontend/views/");
$view->registerEngines(array(
'.phtml' => 'Phalcon\Mvc\View\Engine\Php'
));
return $view;
}); }
}
frontend/controllers/indexController.php:
namespace Multiple\Frontend\Controllers;
//use Multiple\Models\Level;
class IndexController extends \Phalcon\Mvc\Controller { public function indexAction()
{
$level = Level::findFirst("id = 10");
$this->view->pick('index/index');
} }
models/Level.php
//namespace Multiple\Models;
class Level extends \Phalcon\Mvc\Model
{ public $lid;
public $name;
public $description;
public $create_time; public function beforeCreate()
{
if( is_null($this->create_time) )
{
$this->create_time = time();
} }
}
那么多模块下,如何分页的,如果直接用->from(表名),报错找不到此类,此时要引用model类的全命名空间名称如下:
Multiple\Models\Level(表)。
namespace Multiple\Backend\Controllers;
use Phalcon\Paginator\Adapter\QueryBuilder;
class IndexController extends ControllerBase { public function initialize()
{
parent::initialize(); } public function indexAction() { $builder = $this->modelsManager->createBuilder()
->columns("id,username,name,email")
->from('Users')
->orderBy("id ASC")
->getQuery()
->execute(); $paginator = new QueryBuilder(array(
"builder"=>$builder,
"limit"=>10,
"page"=>1
)); $this->view->setTemplateBefore('base');
$this->view->pick('index/index');
} }
phalcon: 官方多模块的更多相关文章
- phalcon:官方多模块支models层,mode数据库配置
phalcon:官方多模块支models层,mode数据库配置 按: backend分后台, frondend 分前台 每个多模块下面都有一个 Module.php文件, 1. frondend/mo ...
- phalcon:官方多模块支models层,mode数据库配置(二)
phalcon:官方多模块支models层,mode数据库配置(二) 利用:\pahlcon\mvc\model\Manager::registerNamespaceAlias()方法获取多模块下的m ...
- phalcon:整合官方多模块功能,方便多表查询
phalcon:整合官方多模块功能,方便多表查询 项目分为: namespace Multiple\Backend; namespace Multiple\Frontend; 目录结构如下: publ ...
- 【嵌入式开发】树莓派+官方摄像头模块+VLC串流实时输出网络视频流
sudo apt-get update sudo apt-get install vlc sudo raspivid -o - -t 0 -w 640 -h 360 -fps 25|cvlc -vvv ...
- Phalcon的Mvc结构及启动流程(部分源码分析)
Phalcon本身有支持创建多种形式的Web应用项目以应对不同场景,包括迷你应用.单模块标准应用.以及较复杂的多模块应用 创建项目 Phalcon环境配置安装后,可以通过命令行生成一个标准的Phalc ...
- Phalcon Framework的MVC结构及启动流程分析
目前的项目中选择了Phalcon Framework作为未来一段时间的核心框架.技术选型的原因会单开一篇Blog另说,本次优先对Phalcon的MVC架构与启动流程进行分析说明,如有遗漏还望指出. P ...
- windows,phalcon工具的安装使用
一.使用工具之前,必须安装phalcon的扩展,也就是php_phalcon.dll动态链接库 phalcon官方地址:https://github.com/phalcon/cphalcon/rele ...
- Phalcon Framework的Mvc结构及启动流程(部分源码分析)
创建项目 Phalcon环境配置安装后,可以通过命令行生成一个标准的Phalcon多模块应用 phalcon project eva --type modules入口文件为public/index.p ...
- Python的时间模块小结(转自:不懂真人)
import datetimeprint time.time() #时间戳 print time.localtime(time.time()) #时间元组 print time.strftime('% ...
随机推荐
- sql server 添加字段并且赋默认值和说明
select soct.Captcha,CreateOn,* from SceneryOrderCheckTicket soctright join (SELECT Captcha,convert(c ...
- [Django_1_2]数据库设置
Django 数据库设置 本篇将介绍Django中的数据库设置,了解模型(models,数据库中的表项设计). 上一篇文章为:<a href="http://www.cnblogs.c ...
- 创建Linux swap
创建SWAP文件(下面指定的是8G容量,系统物理内存8G): dd if=/dev/zero of=/data/swapfile bs=1M count=8192 格式化该文件 mkswap swap ...
- 2016CCPC东北地区大学生程序设计竞赛 1005 HDU5926
链接http://acm.hdu.edu.cn/showproblem.php?pid=5926 题意:给我们一个矩阵,问你根据连连看的玩法可以消去其中的元素 解法:连连看怎么玩,就怎么写,别忘记边界 ...
- easyui commbox嵌入一个checkbox的实现
function InitComBoBox(datagrid, combxid, formid, url, valueField, textField,_prompt) { $(combxid).co ...
- P1119 灾后重建
题目背景 B地区在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响.但是在村庄重建好之前,所有与未重建完成的村庄的公路均无法通车.换句话说,只有连接着两个重建完成的村庄的公路才能 ...
- C# for和 foreach 的数组遍历 比较
刚学习程序,感觉写代码 很有意思,所以把自己的感悟写下来啦,第一次写博客,可能是菜鸟中的菜鸟 时间久了,相信就会写的很好哦! for和 foreach 的数组遍历 比较 很简单的程序,不解释啦! u ...
- 【MySQL】MySQL复制表结构、表数据
平常,复制.备份表,一般都直接操作IDE完成.但有时,一些初始化数据的脚本,在操作数据前,最好备份下操作表的结构.数据,不至于出错了被置于为难的境地. 所以复制表结构.表数据的语句就派上用场. > ...
- Android开发开始--环境搭建
一.搭建Android开发环境 1.JDK (Java Development Kit) 2.Eclipse 3.Android SDK (Software Development Kit) 4.AD ...
- 02.iOS开发网络篇—HTTP协议
iOS开发网络篇—HTTP协议 说明:apache tomcat服务器必须占用8080端口 一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) ...