【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 内容整理如下所示:

 1 <?php
2 /**
3 * 路由配置文件
4 * 默认配置为default如下:
5 * 'default'=>array(
6 * 'm'=>'phpcms',
7 * 'c'=>'index',
8 * 'a'=>'init',
9 * 'data'=>array(
10 * 'POST'=>array(
11 * 'catid'=>1
12 * ),
13 * 'GET'=>array(
14 * 'contentid'=>1
15 * )
16 * )
17 * )
18 * 其中“m”为模型,“c”为控制器,“a”为事件,“data”为其他附加参数。
19 * data为一个二维数组,可设置POST和GET的默认参数。
20 * POST和GET分别对应PHP中的$_POST和$_GET两个超全局变量。
21 * 在程序中你可以使用$_POST['catid']来得到data下面POST中的数组的值。
22 * data中的所设置的参数等级比较低。如果外部程序有提交相同的名字的变量,将会覆盖配置文件中所设置的值。
23 * 如:外部程序POST了一个变量catid=2那么你在程序中使用$_POST取到的值是2,而不是配置文件中所设置的1。
24 */
25 return array(
26 'default'=>array('m'=>'content', 'c'=>'index', 'a'=>'init'),
27 );

为了更具体的理解,简单实例如下:

1. 在phpcms/modules目录下,新建一个文件夹,命名为demo,即模块名为demo

2. 在demo文件夹中,新建一个文本文件,命名为test,修改文件类型为php。用Notepad++打开test文件,编辑内容如下:

1 <?php
2 class test
3 {
4 public function show()
5 {
6 echo "I Love PHPCMS V9.";
7 }
8 }
9 ?>

注意: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(1)phpcms V9 MVC模式 与 URL访问解析(转)的更多相关文章

  1. phpcms V9 MVC模式 与 URL访问解析

    [1]URL访问解析 观察访问网页时的网址,可以得出模块访问方法,如下示例: http://www.abcd.com.cn/phpcms/index.php?m=content&c=index ...

  2. MVC模式和URL访问

    一.什么是MVC //了解 M -Model 编写model类 对数据进行操作 使用Model类 来操作数据 V -View 编写html文件,页面呈现 C -Controller 编写类文件(Use ...

  3. 3.1.2 MVC模式和URL访问

    本节课大纲: 一.什么是MVC //了解 M -Model 编写model类 对数据进行操作 使用Model类 来操作数据 V -View 编写html文件,页面呈现 C -Controller 编写 ...

  4. ThinkPHP 3 MVC模式和URL访问

    一.什么是MVC                 //了解    M -Model 编写model类 对数据进行操作    V -View  编写html文件,页面呈现    C -Controlle ...

  5. [ThinkPHP]MVC模块和URL访问

    ## ThinkPHP 3 MVC模式和URL访问#讲师:赵桐正微博:http://weibo.com/zhaotongzheng 本节课大纲: 一.什么是MVC                 // ...

  6. PHPCMS V9实现硬件地址MAC绑定访问技术实现

    目的:会员登录需要 用户名.密码.身份识别码(新增字段) 效果:  解决方法: 目前数据库中macaddress字段已经添加,修改了phpcms\modules\member\index.php 63 ...

  7. 2016/5/6 thinkphp ①框架 ② 框架项目部署 ③MVC模式 ④控制器访问及路由解析 ⑤开发和生产模式 ⑥控制器和对应方法创建 ⑦视图模板文件创建 ⑧url地址大小写设置 ⑨空操作空控制器 ⑩项目分组

    真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困难,代码风格不一样) 项目稳 ...

  8. ASP.Net MVC开发基础学习笔记:一、走向MVC模式

    一.ASP.Net的两种开发模式 1.1 ASP.Net WebForm的开发模式 (1)处理流程 在传统的WebForm模式下,我们请求一个例如http://www.aspnetmvc.com/bl ...

  9. [ASP.NET MVC 小牛之路]01 - 理解MVC模式

    本人博客已转移至:http://www.exblr.com/liam  PS:MVC出来很久了,工作上一直没机会用.出于兴趣,工作之余我将展开对MVC的深入学习,通过博文来记录所学所得,并希望能得到各 ...

随机推荐

  1. Wix#可以直接写C#代码来生成Wix的MSI安装文

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:Wix#可以直接写C#代码来生成Wix的MSI安装文.

  2. zabbix邮件报警脚本

    #!/usr/bin/python #coding:utf-8 import smtplib from email.mime.text import MIMEText import sys mail_ ...

  3. js动态删除div元素

    在做用户查找时 由于要把查找的结果动态载入和显示,所以,那些html元素要由Ajax动态生成.用户打开查找界面时,有系统推荐的用户,而当用户按条件查找后,查找的结果动态载入和显示.所以考虑到用js来搞 ...

  4. node.js在windows下的学习笔记(1)---安装node.js

    1.首先打开http://www.nodejs.org/ 2.选择DOWNLOADS,跳转到下面的画面,我的系统是windows7的32位.所以选择.msi的32bit版本. 3.下载后,得到一个5. ...

  5. 【转】Cocos2d-x 2.0 拖尾效果深入分析

    Cocos2d-x 2.0 拖尾效果深入分析 另:本章所用Cocos2d-x版本为: cocos2d-2.0-x-2.0.2@ Aug 30 2012 http://cn.cocos2d-x.org/ ...

  6. Linux NFS 说明,配置及故障分析

    一.NFS服务简介 NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布.功能是通过网络让不同的机器.不同的操 ...

  7. WPF Command命令模式

    //定义接口 public interface IView { bool IsChanged { get; set; } void SetBinding(); void Clear(); } //定义 ...

  8. Hadoop的伪分布式搭建

    我们在搭建伪分布式Hadoop环境,需要将一系列的配置文件配置好. 一.配置文件 1. 配置文件hadoop-env.sh export JAVA_HOME=/opt/modules/jdk1.7.0 ...

  9. U3D 2D游戏之黑暗纪元 2D游戏基础入门开发全(1)

    第一个U3D 2D游戏的例子,全部自己编写,算是入门用,这里记录一下. 1.首先游戏把层次布置好,这里分为 背景层,游戏层,UI层 背景层 (Background-1):就是单纯的背景显示作用. 游戏 ...

  10. sublime text3输入中文的问题.

    1.新建sublime_imfix.c文件 里面输入: /* * sublime-imfix.c * Use LD_PRELOAD to interpose some function to fix ...