phpcms V9 MVC模式 与 URL访问解析
【1】URL访问解析
观察访问网页时的网址,可以得出模块访问方法,如下示例:
http://www.abcd.com.cn/phpcms/index.php?m=content&c=index&a=show&id=1
关于此URL解析如下:
m = content 为模块/模型名称 位于phpcms/modules/content (必须项)
c = index 为控制器名称 位于phpcms/modules/content/index.php (必须项)
a = show 为事件名称 位于phpcms/modules/content/index.php 中的show方法
id = 1 为其他参数 与正常get传递参数形式相同
那么,问题来了!我们经常访问首页的网址为:http://www.abcd.com.cn/phpcms/index.php 为什么没有m和c的值呢?
这里解释一下,系统在没有指定模块和控制器的时候,会执行默认的模块和操作。如上的网址,PHPCMS默认路由会定位到content模块的index控制器中的init操作。因此与下面的URL结果是相同的:
http://www.abcd.com.cn/phpcms/index.php?m=content&c=index&a=init
系统还支持URL路由的功能,这些都能够带来其他的url访问效果。
其路由文件位于 phpcms\caches\configs\route.php 内容整理如下所示:
<?php
/**
* 路由配置文件
* 默认配置为default如下:
* 'default'=>array(
* 'm'=>'phpcms',
* 'c'=>'index',
* 'a'=>'init',
* 'data'=>array(
* 'POST'=>array(
* 'catid'=>1
* ),
* 'GET'=>array(
* 'contentid'=>1
* )
* )
* )
* 其中“m”为模型,“c”为控制器,“a”为事件,“data”为其他附加参数。
* data为一个二维数组,可设置POST和GET的默认参数。
* POST和GET分别对应PHP中的$_POST和$_GET两个超全局变量。
* 在程序中你可以使用$_POST['catid']来得到data下面POST中的数组的值。
* data中的所设置的参数等级比较低。如果外部程序有提交相同的名字的变量,将会覆盖配置文件中所设置的值。
* 如:外部程序POST了一个变量catid=2那么你在程序中使用$_POST取到的值是2,而不是配置文件中所设置的1。
*/
return array(
'default'=>array('m'=>'content', 'c'=>'index', 'a'=>'init'),
);
为了更具体的理解,简单实例如下:
1. 在phpcms/modules目录下,新建一个文件夹,命名为demo,即模块名为demo
2. 在demo文件夹中,新建一个文本文件,命名为test,修改文件类型为php。用Notepad++打开test文件,编辑内容如下:
<?php
class test
{
public function show()
{
echo "I Love PHPCMS V9.";
}
}
?>
注意:test.php里面的内容,必须要用class类的写法,否则会提示control找不到,即mvc中的c找不到。如果没有指定a,则调用init方法,如果没有实现init方法,则会显示:Action does not exist。
3. 在浏览器的网址栏输入:http://localhost/phpcms/index.php?m=demo&c=test&a=show 回车 结果如下图:

【2】模块
phpcms V9框架中的模块,位于phpcms/modules目录中,每一个目录称为一个模块。即上文URL访问中的m。
如果需要创建一个模块,只要在phpcms/modules目录下创建文件夹并放入你的控制器类就可以了。
【3】控制器
关于控制器类,可以参见文章《phpcms V9 添加模块》
Good Good Study, Day Day Up.
顺序 选择 循环 总结
phpcms V9 MVC模式 与 URL访问解析的更多相关文章
- phpcms(1)phpcms V9 MVC模式 与 URL访问解析(转)
[1]URL访问解析 观察访问网页时的网址,可以得出模块访问方法,如下示例: http://www.abcd.com.cn/phpcms/index.php?m=content&c=index ...
- MVC模式和URL访问
一.什么是MVC //了解 M -Model 编写model类 对数据进行操作 使用Model类 来操作数据 V -View 编写html文件,页面呈现 C -Controller 编写类文件(Use ...
- 3.1.2 MVC模式和URL访问
本节课大纲: 一.什么是MVC //了解 M -Model 编写model类 对数据进行操作 使用Model类 来操作数据 V -View 编写html文件,页面呈现 C -Controller 编写 ...
- ThinkPHP 3 MVC模式和URL访问
一.什么是MVC //了解 M -Model 编写model类 对数据进行操作 V -View 编写html文件,页面呈现 C -Controlle ...
- [ThinkPHP]MVC模块和URL访问
## ThinkPHP 3 MVC模式和URL访问#讲师:赵桐正微博:http://weibo.com/zhaotongzheng 本节课大纲: 一.什么是MVC // ...
- PHPCMS V9实现硬件地址MAC绑定访问技术实现
目的:会员登录需要 用户名.密码.身份识别码(新增字段) 效果: 解决方法: 目前数据库中macaddress字段已经添加,修改了phpcms\modules\member\index.php 63 ...
- phpcms V9 添加模块
为phpcms创建一个模块的开发流程 [1]创建模块目录 通过前面的学习,我们已经知道phpcms V9框架中的模块位于phcms/modules目录中,每一个目录称之为一个模块. 如果要创建一个模块 ...
- phpcms V9 添加模块(转)
转自:http://www.cnblogs.com/Braveliu/p/5101345.html 为phpcms创建一个模块的开发流程 [1]创建模块目录 通过前面的学习,我们已经知道phpcms ...
- phpcms V9 首页模板文件解析
在了解了<phpcms V9 URL访问解析>之后,我们已经知道首页最终执行的是content模块下index控制器的init方法. 下面, 我们逐步分析过程如下: 第一.首页默认执行的是 ...
随机推荐
- acm常见算法及例题
转自:http://blog.csdn.net/hengjie2009/article/details/7540135 acm常见算法及例题 初期:一.基本算法: (1)枚举. (poj17 ...
- 理解group by 语句的扩展使用
在SQL的开发中我们会经常使用group by语句对数据进行分组统计,然而在一些复杂的BI报表开发中会常遇到更复杂的分组需求,单单使用group by 就不能解决我们的问题了,这时我们就需要学习了解一 ...
- oracle空间管理
表空间:组织数据文件的一种途径, 是一个逻辑概念 包含有 表,字段,索引 一个数据库可以对应多个表空间 一个物理文件对应一个表空间 任何一个数据库创建的第一一个表空间是 system Tables ...
- MySql的join(连接)查询 (三表 left join 写法)
1.内连接:将两个表中存在连结关系的字段符合连接条件的记录形成记录集 Select A.name,B.name from A inner join B on A.id=B.id和 Select A.n ...
- CVTRES : fatal error CVT1100 , fatal error LNK1123:
CVTRES : fatal error CVT1100: duplicate resource. type:DIALOG, name:901, language:0x0804LINK : fatal ...
- JavaDate类
在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理.这里简单介绍一下Date类的使用. ...
- Docker-compose命令详解
语法: Define and run multi-container applications with Docker. Usage: docker-compose [-f=<arg> ...
- python中的Queue
一.先说说Queue(队列对象) Queue是python中的标准库,可以直接import 引用,之前学习的时候有听过著名的“先吃先拉”与“后吃先吐”,其实就是这里说的队列,队列的构造的时候可以定义它 ...
- poj分类
初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. ( ...
- C#对泛型List<T>系列化与反系列化
练习一个小例子,在C#中,怎样对泛型List<T>数据集进行系列化与反系列化.我们先了解msdn提供的JavaScriptSerializer类: JavaScriptSerializer ...