ThinkPHP控制器
ThinkPHP控制器Controller
1、什么是控制器
在MVC框架中,其核心就是C(Controller)控制器。主要用于接收用户请求,处理业务逻辑。
2、控制器的定义
在一个ThinkPHP系统中,其可以分为多个模块(如Home前台模块,Admin后台模块等),我们在定义控制器时都需要定义在相应的模块内。定义规范如下:
控制器名称(首字母大写)+Controller(关键词)+.class.php(类文件后缀)
如:IndexController.class.php
NewsController.class.php
3、编写控制器代码
① 定义命名空间
命名空间就是为了解决php中类、函数以及常量重名问题。
namespace 空间名称
特别说明:命名空间的空间名称与路径是没有任何关系的,但是在ThinkPHP框架中其与ThinkPHP框架的路径是想对应的,谨记!!!
② 引入核心控制器
use 命名空间
use Think\Controller;
③ 定义自定义控制器,如下图所示:
4、控制器的访问规则(URL调度模式)
在ThinkPHP框架中,一共有4中URL调度模式,默认使用的是第2中,PATHINFO调度模式:
http://自定义域名/index.php(入口文件)/Home(模块名称)/News(控制器名称)/index(操作方法)
① 普通调度模式
参数说明:
基本语法:
http://自定义域名/index.php(入口文件)?m=Home(模块)&c=News(控制器名称)&a=index(操作方法)
如果想在ThinkPHP中使用普通调度模式,需要在自定义配置文件中设置URL_MODEL参数如下:
运行结果:
② PATHINFO调度模式
PATHINFO调度模式是ThinkPHP中默认的URL调度模式,其号称是最友好的链接形式,有利于SEO优化,基本语法:
http://自定义域名/index.php(入口文件)/Home(模块名称)/News(控制器名称)/index(操作方法)
③ REWRITE重写模式(防盗链)
基本语法:
http://自定义域名/Home(前台模块)/News(控制器名称)/index(操作方法)
Rewrite重写模式详细设置步骤:
1)httpd.conf配置文件中加载了mod_rewrite.so模块
2)AllowOverride None 将None改为 All
记住:设置完成后要重启Apache服务器!
3)确保URL_MODEL设置为2
4)把下面的内容保存为.htaccess文件放到入口文件的同级目录下
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
设置成功后,访问效果如下图所示:
④ 兼容模式
基本语法:
http://自定义域名/index.php(入口文件)?s=Home(前台模块)/News(控制器)/index(操作方法)
设置URL_MODEL为3即可,如下图所示:
运行结果:
5、开启ThinkPHP代码调试
在实际项目开发中,肯定会遇到相关错误信息,但是默认ThinkPHP框架显示的是友好错误,如下图所示:
为了能实现更好的代码调试效果,可以在项目的入口文件中定义以下参数:
记住:项目上线后,这行代码要注释掉!
6、空操作
1)定制错误页面
2)优化url链接
7、空控制器
1)定制错误页面
2)优化url链接
8、划分项目前后台模块(Home、Admin)
ThinkPHP3.2.3模块结构划分:
Home模块名称
Controller控制器
Model模型
View视图
Admin模块名称
Controller控制器
Model模型
View视图
① 在Application文件夹下创建Admin文件夹作为后台模块
② 在Admin文件夹下创建Controller/Model/View三个文件夹
③ 配置文件共享问题
在Application项目目录中,一共有两个模块(Home、Admin),那这个配置文件应该怎么设置呢?
1)每个模块下单独使用一个配置文件config.php(当前配置文件只对当前模块有用)
2)两个模块公用一个配置文件,直接写在Application/Common/Conf/config.php文件中
④ 设置配置文件
案例:在后台定义登陆模块
① 在Application/Admin/Controller文件夹中创建一个Public控制器
② 编写代码如下图所示:
③ 通过URL调度模式2访问后台登陆模块
9、URL大小写
在Window操作系统中,其对URL大小写并不敏感(不区分大小写)。但是其在Linux操作系统中又是严格区别大小写的,所以我们可以通过设置以下参数让ThinkPHP不区分大小写。
10、页面跳转(带可视化模板)
$this->success(msg,url,time) :成功跳转
$this->error(msg,url,time) :失败跳转
示例代码:
如果在实际项目开发中,需要更改success与error的模板,可以通过以下参数获取模板信息:
11、页面重定向
$this->redirect(url,array('id'=>1),5,"页面跳转中");
参数说明:
url:跳转链接
array('id'=>1) :传递参数id为1
5:等待时间
"页面跳转中" :提示信息…
ThinkPHP控制器的更多相关文章
- ThinkPHP2.2框架执行流程图,ThinkPHP控制器的执行流程
ThinkPHP2.2框架执行原理.流程图在线手册 ThinkPHP控制器的执行流程 对用户的第一次URL访问 http://<serverIp>/My/index.php/Index/s ...
- Thinkphp控制器,1.多层控制器2.多级控制器
1.多层控制器 ThinkPHP的控制器支持多层和多级,多层指的是控制器可以分层,例如除了默认的Controller控制器层(我们可以称之为访问控制器),还可以添加事件控制器(层),例如: ├─Con ...
- Thinkphp 控制器
控 制 器: 1.命名方法:新建一个主页面的控制器 controller文件夹下新建一个文件,命名为:MainController.class.php首字母都大写,称为驼峰命名法 eg: <?p ...
- 6月13 ThinkPHP控制器
控制器 控制器是MVC模式中的核心,tp默认有一个Index控制器: 1.控制器的命名规则:新建一个主页面的控制器 在JiaoWu/Home/Controller下新建一个文件:MainControl ...
- thinkphp 控制器定义
控制器和操作 一般来说,ThinkPHP的控制器是一个类,而操作则是控制器类的一个公共方法. 下面就是一个典型的控制器类的定义: <?php namespace Home\Controller; ...
- 关于ThinkPHP控制器的方法失效的问题
今天发现控制器的方法失效了,用了排除法,找了长时间的原因,都没有找出来,后来干脆把home模块中的控制器和视图文件都复制到bbs模块下,竟然也不行. 这说明了控制器和视图没有问题,一定是模块的配置有问 ...
- ThinkPHP控制器输出防止乱码小技巧
在控制器中加一句:试试看 header('content-type:text/html;charset=utf-8');
- thinkphp 控制器unset删除对象变量失败。。
今儿开发过程中发现 tp是unset 变量失败..具体代码 foreach( $this->menu as $k => $v){ if(0 == $v['flag']) unset($th ...
- thinkphp控制器的使用
控制器的使用 2.1url如何调用控制器 以典型的URL为例 http://localhost/shop/index.php/home/index/test /*home/controller/in ...
随机推荐
- vs2012运行c语言出现:无法查找或打开 PDB 文件
1.点 调试2.然后 选项和设置3.右边勾上 启用源服务器支持4.左边点 符号5.把微软符号服务器勾6.运行的时候等一下 莫慌!!7.问题解决
- centos 安装git server
1.yum install lrzsz wget git 2.安装gitosis:gitosis为Git用户权限管理系统,通过管理服务端的/home/git/.ssh/authorized_key文件 ...
- 终端I/O之终端标识
历史沿袭至今,在大多数UNIX系统中,控制终端的名字是/dev/tty. POSIX.1提供了一个运行时函数,可被用来确定控制终端的名字. #include <stdio.h> char ...
- 关于Android 访问权限设置
我前几天在做同城交友网(www.niyuewo.com)与医药网(www.yiyaojing.com)时遇到的问题整理如下: Android开发应用程序时,如果应用程序需要访问网络权限,需要在 And ...
- WIN7 下 Qt Creator 安装 QWT
WIN7 下 Qt Creator 安装 QWT 环境:WIN7 +QT Creator2.6.2 1.下载QWT源代码 qwt-6.1-rc3.zip 2 编译QWT open projects- ...
- 关于解决 The processing instruction target matching "[xX][mM][lL]" is not allowed
在处理和保存XML文件时,出现The processing instruction target matching "[xX][mM][lL]" is not allowed 错误 ...
- storm0.9.0.1安装
storm 0.9.x的好处是引入了netty进行网络传输(需要配置),不用再依赖zeromq和jzmq了 1.下载安装zookeeper ... 2.下载安装storm依赖库 JDK1.6及以上 . ...
- WPF 之 鼠标双击事件
由于WPF中没有鼠标的双击事件,因而只能通过MouseDown事件来模拟.当连续的两次MouseDown事件的时间间隔,没有超过一个设定的时间阈值时,就计算为一个双击事件,并作相应的处理. 利用WPF ...
- 淘宝API Nodejs的实现
关于<淘宝API Nodejs的实现>这是个很忧伤的故事~~ 体验了win10,目前来说还是不如意的,一些应用程序的卡顿,发热~~难以忍受了.只好重装了系统,可是可是!!! 前段时间写的n ...
- DNS resolving 占用大量日志
公司内部DNS配置好后,测试解析正常,只是几乎每秒都有无法解析的日志产生.但分析日志时发现,每天的日志都有2G左右.日志中几乎全是类似network unreachable resolving 'ww ...