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;

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

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控制器

上一篇:iOS基础篇(十三)——UITableView(一)重用机制


下一篇:PHP版本中的VC6,VC9,VC11,TS,NTS区别