限时免费试用:欢迎注册 api.bigmodel.org ,快速体验大模型 API 接入服务。
当前位置:首页 >开发者 >网站框架 >后端框架 >ThinkPHP

ThinkPHP-控制器

分类:ThinkPHP时间:2018-01-16浏览:3019

控制器

控制器定义

多层控制器

Controller控制器层(访问控制器) Event控制器(事件控制器) StuController.class.php
index();

    echo "我是StuController";
  }
}
 ?>
StuEvent.class.php

多级控制器

实例化控制器

Event控制器
$a = A('Stu','Event');

Home模块直接使用
$a = A('Stu');

前置和后置自动调用

public function add(){
    echo "我是add方法,";
  }

  //前置调用
  public function _before_add(){
    echo "add方法前自动调用,";
  }
  //后置调用
  public function _after_add(){
    echo "add方法后自动调用";
  }

Action参数绑定

伪静态

'URL_HTML_SUFFIX'=>'shtml'

-----------
http://serverName/Home/Blog/read/id/1 
变成 
http://serverName/Home/Blog/read/id/1.shtml

伪静态后缀


// 多个伪静态后缀设置 用|分割 'URL_HTML_SUFFIX' => 'html|shtml|xml'

禁止访问后缀

//URL禁止访问的后缀设置
'URL_DENY_SUFFIX' = > 'pdf|ico|png|gif|jpg', 

优先级

//优先级
URL_DENY_SUFFIX的优先级比URL_HTML_SUFFIX要高。


URL大小写

//true不区分大小写 false区分大小写
'URL_CASE_INSENSITIVE' =>true
URL不区分大小写并不会改变系统的命名规范,并且只有按照系统的命名规范后才能正确的实现URL不区分大小写

URL生成

U('地址表达式',['参数'],['伪静态后缀'],['显示域名'])
[模块/控制器/操作#锚点@域名]?参数1=值1&参数2=值2...
U('User/add') // 生成User控制器的add操作的URL地址
U('Blog/read?id=1') // 生成Blog控制器的read操作 并且id为1的URL地址
U('Admin/User/select') // 生成Admin模块的User控制器的select操作的URL地址

参数

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')

伪静态后缀


U('Blog/cate','cate_id=1&status=1','xml');

例子

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

域名支持

锚点支持

U('Blog/read#comment?id=1');

生成的URL地址可能是:

http://serverName/index.php/Home/Blog/read/id/1#comment

AjAX返回

跳转和重定向

3跳转

redirect('User/index',3, '添加成功');
$this->redirect('User/index',array(), 3, '添加成功');
$this->success('添加成功',U('Admin/User/index'));

例子

if($result){
    //设置成功后跳转页面的地址,默认的返回页面是$_SERVER['HTTP_REFERER']
    $this->success('新增成功', 'User/list');
} else {
    //错误页面的默认跳转页面是返回前一页,通常不需要设置
    $this->error('新增失败');
}

设置跳转模板

//默认错误跳转对应的模板文件
'TMPL_ACTION_ERROR' => THINK_PATH . 'Tpl/dispatch_jump.tpl',
//默认成功跳转对应的模板文件
'TMPL_ACTION_SUCCESS' => THINK_PATH . 'Tpl/dispatch_jump.tpl',

输入变量

获取变量

$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新增)

获取

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.'); 

方法过滤


// 采用htmlspecialchars方法对$_GET['name'] 进行过滤,如果不存在则返回空字符串 echo I('get.name','','htmlspecialchars');

过滤 三元运算

I('post.email','','email');
支持类型:
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

正则过滤

I('get.name','','/^[A-Za-z]+$/');
I('get.id',0,'/^\d+$/');

变量修饰符

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()
public function _empty(){
      echo "没有此方法";
    }

空控制器

系统请求不到控制器时,自动调用EmptyController
新建控制器
EmptyController.class.php

插件控制器

操作绑定到类

本站文章如未注明出处均为原创,转载请注明出处,如有侵权请邮件联系站长。
0/500
Share your thoughts respectfully.