ThinkPHP控制器

时间:2022-08-24 19:21:09

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;

③ 定义自定义控制器,如下图所示:

ThinkPHP控制器

4、控制器的访问规则(URL调度模式)

在ThinkPHP框架中,一共有4中URL调度模式,默认使用的是第2中,PATHINFO调度模式:

http://自定义域名/index.php(入口文件)/Home(模块名称)/News(控制器名称)/index(操作方法)

ThinkPHP控制器

① 普通调度模式

参数说明:

ThinkPHP控制器

基本语法:

http://自定义域名/index.php(入口文件)?m=Home(模块)&c=News(控制器名称)&a=index(操作方法)

如果想在ThinkPHP中使用普通调度模式,需要在自定义配置文件中设置URL_MODEL参数如下:

ThinkPHP控制器

运行结果:

ThinkPHP控制器

② PATHINFO调度模式

PATHINFO调度模式是ThinkPHP中默认的URL调度模式,其号称是最友好的链接形式,有利于SEO优化,基本语法:

http://自定义域名/index.php(入口文件)/Home(模块名称)/News(控制器名称)/index(操作方法)

ThinkPHP控制器

③ REWRITE重写模式(防盗链)

基本语法:

http://自定义域名/Home(前台模块)/News(控制器名称)/index(操作方法)

Rewrite重写模式详细设置步骤:

1)httpd.conf配置文件中加载了mod_rewrite.so模块

ThinkPHP控制器

2)AllowOverride None 将None改为 All

ThinkPHP控制器

记住:设置完成后要重启Apache服务器!

3)确保URL_MODEL设置为2

ThinkPHP控制器

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>

ThinkPHP控制器

设置成功后,访问效果如下图所示:

ThinkPHP控制器

④ 兼容模式

基本语法:

http://自定义域名/index.php(入口文件)?s=Home(前台模块)/News(控制器)/index(操作方法)

设置URL_MODEL为3即可,如下图所示:

ThinkPHP控制器

运行结果:

ThinkPHP控制器

5、开启ThinkPHP代码调试

在实际项目开发中,肯定会遇到相关错误信息,但是默认ThinkPHP框架显示的是友好错误,如下图所示:

ThinkPHP控制器

为了能实现更好的代码调试效果,可以在项目的入口文件中定义以下参数:

ThinkPHP控制器

记住:项目上线后,这行代码要注释掉!

6、空操作

ThinkPHP控制器

1)定制错误页面

ThinkPHP控制器

2)优化url链接

ThinkPHP控制器

7、空控制器

ThinkPHP控制器

1)定制错误页面

ThinkPHP控制器

2)优化url链接

ThinkPHP控制器

8、划分项目前后台模块(Home、Admin)

ThinkPHP3.2.3模块结构划分:

Home模块名称

Controller控制器

Model模型

View视图

Admin模块名称

Controller控制器

Model模型

View视图

 

① 在Application文件夹下创建Admin文件夹作为后台模块

ThinkPHP控制器

② 在Admin文件夹下创建Controller/Model/View三个文件夹

ThinkPHP控制器

③ 配置文件共享问题

在Application项目目录中,一共有两个模块(Home、Admin),那这个配置文件应该怎么设置呢?

1)每个模块下单独使用一个配置文件config.php(当前配置文件只对当前模块有用)

2)两个模块公用一个配置文件,直接写在Application/Common/Conf/config.php文件中

 

④ 设置配置文件

ThinkPHP控制器

案例:在后台定义登陆模块

① 在Application/Admin/Controller文件夹中创建一个Public控制器

ThinkPHP控制器

② 编写代码如下图所示:

ThinkPHP控制器

③ 通过URL调度模式2访问后台登陆模块

ThinkPHP控制器

9、URL大小写

在Window操作系统中,其对URL大小写并不敏感(不区分大小写)。但是其在Linux操作系统中又是严格区别大小写的,所以我们可以通过设置以下参数让ThinkPHP不区分大小写。

ThinkPHP控制器

10、页面跳转(带可视化模板)

$this->success(msg,url,time) :成功跳转

ThinkPHP控制器

$this->error(msg,url,time) :失败跳转

ThinkPHP控制器

示例代码:

ThinkPHP控制器

如果在实际项目开发中,需要更改success与error的模板,可以通过以下参数获取模板信息:

ThinkPHP控制器

11、页面重定向

$this->redirect(url,array('id'=>1),5,"页面跳转中");

参数说明:

url:跳转链接

array('id'=>1) :传递参数id为1

5:等待时间

"页面跳转中" :提示信息…

ThinkPHP控制器

ThinkPHP控制器的更多相关文章

  1. ThinkPHP2&period;2框架执行流程图&comma;ThinkPHP控制器的执行流程

    ThinkPHP2.2框架执行原理.流程图在线手册 ThinkPHP控制器的执行流程 对用户的第一次URL访问 http://<serverIp>/My/index.php/Index/s ...

  2. Thinkphp控制器,1&period;多层控制器2&period;多级控制器

    1.多层控制器 ThinkPHP的控制器支持多层和多级,多层指的是控制器可以分层,例如除了默认的Controller控制器层(我们可以称之为访问控制器),还可以添加事件控制器(层),例如: ├─Con ...

  3. Thinkphp 控制器

    控 制 器: 1.命名方法:新建一个主页面的控制器 controller文件夹下新建一个文件,命名为:MainController.class.php首字母都大写,称为驼峰命名法 eg: <?p ...

  4. 6月13 ThinkPHP控制器

    控制器 控制器是MVC模式中的核心,tp默认有一个Index控制器: 1.控制器的命名规则:新建一个主页面的控制器 在JiaoWu/Home/Controller下新建一个文件:MainControl ...

  5. thinkphp 控制器定义

    控制器和操作 一般来说,ThinkPHP的控制器是一个类,而操作则是控制器类的一个公共方法. 下面就是一个典型的控制器类的定义: <?php namespace Home\Controller; ...

  6. 关于ThinkPHP控制器的方法失效的问题

    今天发现控制器的方法失效了,用了排除法,找了长时间的原因,都没有找出来,后来干脆把home模块中的控制器和视图文件都复制到bbs模块下,竟然也不行. 这说明了控制器和视图没有问题,一定是模块的配置有问 ...

  7. ThinkPHP控制器输出防止乱码小技巧

    在控制器中加一句:试试看 header('content-type:text/html;charset=utf-8');

  8. thinkphp 控制器unset删除对象变量失败。。

    今儿开发过程中发现 tp是unset 变量失败..具体代码 foreach( $this->menu as $k => $v){ if(0 == $v['flag']) unset($th ...

  9. thinkphp控制器的使用

    控制器的使用 2.1url如何调用控制器 以典型的URL为例  http://localhost/shop/index.php/home/index/test /*home/controller/in ...

随机推荐

  1. LinkedList详细分析

    一.源码解析1. LinkedList类定义2.LinkedList数据结构原理3.私有属性4.构造方法5.元素添加add()及原理6.删除数据remove()7.数据获取get()8.数据复制clo ...

  2. 基于 EntityFramework 的数据库主从读写分离

    现在刚开始来研究EntityFramwork,起初是在vs2012中通过工具来创建EF ,但是对我这种不熟悉菜鸟来说 有很多业务用EF做出来还是有点难度的,今天来手动搭建一个EF框架,大神勿喷

  3. hadoop安装计

    hadoop安装计 大体上按这个做就好了 http://blog.csdn.net/hitwengqi/article/details/8008203 需要修改hadoop-env.sh export ...

  4. push notification for iphone

    由于公司业务需求,以前一直做PHP开发,突然让我研究push notification ,一下子迷糊啦,不知所措,抓狂!但是在自己的努力下还是初有成效!现拿出来显摆一下! 1:push notific ...

  5. poj 1149 pigs ---- 最大流

    题意以及分析:http://ycool.com/post/zhhrrm6#rule3 主要是建图,简化图,然后在套最大流的模板. #include <iostream> #include& ...

  6. WCF技术剖析之二十一:WCF基本异常处理模式&lbrack;下篇&rsqb;

    原文:WCF技术剖析之二十一:WCF基本异常处理模式[下篇] 从FaultContractAttribute的定义我们可以看出,该特性可以在同一个目标对象上面多次应用(AllowMultiple = ...

  7. &lbrack;html5&rsqb; 学习笔记-html5音频视频

    HTML5 最大的新特色之一就是支持音频和视频.在 HTML5 之前,我们必须使用插件如 Silverlight  或 Flash 来实现这些功能.在 HTML5 中,可以直接使用新标签< au ...

  8. 芯灵思Sinlinx A64开发板Linux内核定时器编程

    开发平台 芯灵思Sinlinx A64 内存: 1GB 存储: 4GB 开发板详细参数 https://m.tb.cn/h.3wMaSKm 开发板交流群 641395230 Linux 内核定时器是内 ...

  9. 2017-2018-1 Java演绎法 第九、十周 作业

    团队成员 [20162315 马军] [20162316 刘诚昊] [20162317 袁逸灏(组长)] [20162319 莫礼钟] [20162320 刘先润] [20162330 刘伟康] 项目 ...

  10. POJ3281&colon;Dining(dinic&plus;拆点)

    题目链接:http://poj.org/problem?id=3281 PS:刷够网络流了,先这样吧,之后再刷,慢慢补. 题意:有F种食物,D种饮料,N头奶牛,只能吃某种食物和饮料(而且只能吃特定的一 ...