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('% ...
随机推荐
- 修改Netbeans默认使用UTF-8编码
NetBeans是一款优秀的开源集成开发环境,可以用于Java,C/C++,PHP等语言的开发.同时它也是一个可扩展的开发平台,可以通过插件来扩展官方版本没有的功能.自从被Oracle这个开源杀手收购 ...
- zookeeper系列之五—Leader选举算法
leader选举算法 zookeeper server内部原理 zookeeper client
- excel小写金额转换成中文大写
假设 假设数据在A1单元格 任何一个个单元格输入公式=TEXT(INT(A1),"[dbnum2]")&"元"&IF(INT(A1*10)-IN ...
- linux内核中的GPIO系统之(1):软件框架
一.前言 作为一个工作多年的系统工程师,免不了做两件事情:培训新员工和给新员工分配任务.对于那些刚刚从学校出来的学生,一般在开始的时候总是分配一些非常简单的任务,例如GPIO driver.LED d ...
- iOS深入学习(UITableView:系列1-最基本的东西)
这是UITableView博客系列的第一篇,使用xib和arc编码,主要讲解一些UITableView使用过程中简单的.但是又容易被忽略的东西,而且我会告诉读者,怎样在使用了之后就再也不会忘记. 操作 ...
- Cheatsheet: 2013 07.01 ~ 07.08
.NET The overhead of async/await in NET 4.5 await Task, Task.Wait and Friends 350 Interview Question ...
- SQL将金额转换为汉子
-- ============================================= -- Author: 苟安廷 -- Create date: 2008-8-13 -- Descrip ...
- How to evaluate a transimpedance amplifier (part 2)
In my previous blog on "How to evaluate a transimpedance amplifier, part 1", we looked at ...
- Mybatis部分
Mybatis部分 1.JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的? ① 数据库链接创建.释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题. 解决:在Sq ...
- 将文件读取到内存、打印pe结构
#include <stdio.h> #include <malloc.h> #include <stdlib.h> #include <string.h&g ...