码迷,mamicode.com
首页 > Web开发 > 详细

ThinkPHP控制器

时间:2016-04-08 00:38:15      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:

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

标签:

原文地址:http://www.cnblogs.com/nyxd/p/5366061.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!