如果你对该文章中的内容有疑问/不解,可以点击此处链接提问
要注明问题和此文章链接地址 点击此处跳转
控制器
控制器定义
多层控制器
Controller控制器层(访问控制器)
Event控制器(事件控制器)
StuController.class.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php namespace Home\Controller; use Think\Controller; use Home\Event\StuEvent; class StuController extends Controller { public function index(){ $a = A('Stu','Event'); $a->index(); echo "我是StuController"; } } ?> |
StuEvent.class.php
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php namespace Home\Event; use Think\Controller; class StuEvent extends Controller { public function index(){ echo "我是event"; } } ?> |
多级控制器
实例化控制器
1 2 3 4 5 6 |
Event控制器 $a = A('Stu','Event'); Home模块直接使用 $a = A('Stu'); |
前置和后置自动调用
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public function add(){ echo "我是add方法,"; } //前置调用 public function _before_add(){ echo "add方法前自动调用,"; } //后置调用 public function _after_add(){ echo "add方法后自动调用"; } |
Action参数绑定
伪静态
1 2 3 4 5 6 7 8 |
'URL_HTML_SUFFIX'=>'shtml' ----------- http://serverName/Home/Blog/read/id/1 变成 http://serverName/Home/Blog/read/id/1.shtml |
伪静态后缀
1 2 3 4 |
<br />// 多个伪静态后缀设置 用|分割 'URL_HTML_SUFFIX' => 'html|shtml|xml' |
禁止访问后缀
1 2 3 |
//URL禁止访问的后缀设置 'URL_DENY_SUFFIX' = > 'pdf|ico|png|gif|jpg', |
优先级
1 2 3 4 5 |
//优先级 URL_DENY_SUFFIX的优先级比URL_HTML_SUFFIX要高。 |
URL大小写
1 2 3 |
//true不区分大小写 false区分大小写 'URL_CASE_INSENSITIVE' =>true |
URL不区分大小写并不会改变系统的命名规范,并且只有按照系统的命名规范后才能正确的实现URL不区分大小写
URL生成
U(‘地址表达式’,[‘参数’],[‘伪静态后缀’],[‘显示域名’])
1 2 |
[模块/控制器/操作#锚点@域名]?参数1=值1&参数2=值2... |
1 2 3 4 |
U('User/add') // 生成User控制器的add操作的URL地址 U('Blog/read?id=1') // 生成Blog控制器的read操作 并且id为1的URL地址 U('Admin/User/select') // 生成Admin模块的User控制器的select操作的URL地址 |
参数
1 2 3 4 |
U('Blog/cate',array('cate_id'=>1,'status'=>1)) U('Blog/cate','cate_id=1&status=1') U('Blog/cate?cate_id=1&status=1') |
伪静态后缀
1 2 |
<br />U('Blog/cate','cate_id=1&status=1','xml'); |
例子
1 2 3 4 5 6 7 8 9 10 11 |
U('Blog/read?id=1'); 普通模式: http://serverName/index.php?m=Blog&a=read&id=1 PATHINFO模式: http://serverName/index.php/Home/Blog/read/id/1 REWRITE模式: http://serverName/Home/Blog/read/id/1 兼容模式: http://serverName/Home/Blog/read/id/1.html |
域名支持
锚点支持
1 2 3 4 5 6 7 |
U('Blog/read#comment?id=1'); 生成的URL地址可能是: http://serverName/index.php/Home/Blog/read/id/1#comment |
AjAX返回
跳转和重定向
3跳转
1 2 3 4 |
redirect('User/index',3, '添加成功'); $this->redirect('User/index',array(), 3, '添加成功'); $this->success('添加成功',U('Admin/User/index')); |
例子
1 2 3 4 5 6 7 8 |
if($result){ //设置成功后跳转页面的地址,默认的返回页面是$_SERVER['HTTP_REFERER'] $this->success('新增成功', 'User/list'); } else { //错误页面的默认跳转页面是返回前一页,通常不需要设置 $this->error('新增失败'); } |
设置跳转模板
1 2 3 4 5 |
//默认错误跳转对应的模板文件 'TMPL_ACTION_ERROR' => THINK_PATH . 'Tpl/dispatch_jump.tpl', //默认成功跳转对应的模板文件 'TMPL_ACTION_SUCCESS' => THINK_PATH . 'Tpl/dispatch_jump.tpl', |
输入变量
获取变量
1 2 3 4 5 6 |
$id = $_GET['id']; // 获取get变量 $name = $_POST['name']; // 获取post变量 $value = $_SESSION['var']; // 获取session变量 $name = $_COOKIE['name']; // 获取cookie变量 $file = $_SERVER['PHP_SELF']; // 获取server变量 |
I方法
I(‘变量类型.变量名/修饰符’,[‘默认值’],[‘过滤方法’],[‘额外数据源’])
变量类型 | 含义 |
---|---|
get | 获取GET参数 |
post | 获取POST参数 |
param | 自动判断请求类型获取GET、POST或者PUT参数 |
request | 获取REQUEST 参数 |
put | 获取PUT 参数 |
session | 获取 $_SESSION 参数 |
cookie | 获取 $_COOKIE 参数 |
server | 获取 $_SERVER 参数 |
globals | 获取 $GLOBALS参数 |
path | 获取 PATHINFO模式的URL参数(3.2.2新增) |
data | 获取 其他类型的参数,需要配合额外数据源参数(3.2.2新增) |
获取
1 2 3 4 5 6 7 8 9 10 11 12 |
echo I('get.id'); // 相当于 $_GET['id'] echo I('get.name'); // 相当于 $_GET['name'] 支持默认值 echo I('get.id',0); // 如果不存在$_GET['id'] 则返回0 echo I('get.name',''); // 如果不存在$_GET['name'] 则返回空字符串 整个数组 // 获取整个$_GET 数组 I('get.'); |
方法过滤
1 2 3 |
<br />// 采用htmlspecialchars方法对$_GET['name'] 进行过滤,如果不存在则返回空字符串 echo I('get.name','','htmlspecialchars'); |
过滤 三元运算
1 2 |
I('post.email','','email'); |
支持类型:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
int boolean float validate_regexp validate_url validate_email validate_ip string stripped encoded special_chars unsafe_raw email url number_int number_float magic_quotes callback |
正则过滤
1 2 3 4 |
I('get.name','','/^[A-Za-z]+$/'); I('get.id',0,'/^\d+$/'); |
变量修饰符
1 2 3 4 |
I('get.id/d'); I('post.name/s'); I('post.ids/a'); |
修饰符 | 作用 |
---|---|
s | 强制转换为字符串类型 |
d | 强制转换为整形类型 |
b | 强制转换为布尔类型 |
a | 强制转换为数组类型 |
f | 强制转换为浮点类型 |
请求类型
常量 | 说明 |
---|---|
IS_GET | 判断是否是GET方式提交 |
IS_POST | 判断是否是POST方式提交 |
IS_PUT | 判断是否是PUT方式提交 |
IS_DELETE | 判断是否是DELETE方式提交 |
IS_AJAX | 判断是否是AJAX提交 |
REQUEST_METHOD | 当前提交类型 |
空操作(空方法)
系统找不到请求的方法时,会调用此方法
_empty()
1 2 3 4 |
public function _empty(){ echo "没有此方法"; } |
空控制器
系统请求不到控制器时,自动调用EmptyController
1 2 3 4 5 6 7 8 9 10 11 12 13 |
新建控制器 EmptyController.class.php <?php namespace Home\Controller; use Think\Controller; class EmptyController extends Controller { public function _empty(){ echo '控制器非法操作'; } } |