thinkl php.3.2,Thinkphp 3.2.3 控制器 Controller

一、控制器操作

1.1、配置控制器方法后缀'ACTION_SUFFIX'=>'Action'

1.2、事件:处理业务代码的冗余

①、创建事件控制器目录:Event

②、创建 UserEvent.class.php 类class UserEvent{

public function test(){

echo '当触发测试事件,执行这个方法,这个方法的内容调用';

}

}

访问控制器内部调用事件控制器方法class UserController extends Controller{

public function test(){

$userEvent = new UserEvent();

$userEvent->save();

}

}

PS:调用别的控制器还可以使用A()方法$userEvent = A('User','Event');

$userEvnte = A('Admin/User','Event');

1.3、多级别控制器

①、配置允许二级控制器,配置了二级控制器,一级控制器就不能用了'CONTROLLER_LEVER;=>2

②、在 Controller 目录下创建User目录,在User目录下创建一个控制器namespace Home\Controller\User;

use Think\Controller;

class UserController extends Controller{

public function index(){

echo '多级控制器';

}

}

1.4、控制器还提供两个特殊的方法,前置方法 _befor_index 和后置方法 _after_index()。

这两个方法,在控制器调用 index() 方法是的时候,一个在之前执行,一个在之后执行。

二、Action 参数绑定'URL_PARAMS_BIND'=>true //启用 Action 参数绑定,默认为 true

默认的参数绑定是按变量名来绑定的,直接通过 URL 传递参数。class UserController extends Controller{

public function index($id){

echo 'id:'.$id;

}

}

URL:http://localhost/demo/User/index/id/5

PS:当你 URL 没有传递参数(id/5)的时候,那么页面会报错:参数错误或者未定义:id。当然,如果取消绑定,则不会报错'URL_PARAMS_BIND‘=>false。但是,为了程序的严谨性,一般不需要取消参数绑定。

有一种顺序传递参数,这个方法可以省略掉键值对中的键,也就是说 id 不需要传递,只需要传递 5 这个值即可。但必须按照多个参数的顺序。'URL_PARAMS_BIND_TYPE’=>1, //定义按顺序传参绑定

传递两个参数class UserController extends Controller{

public function index($id,$type){

echo 'id:'.$id.',type:'.$type;

}

}

URL:http://localhost/demo/User/index/5/a

三、跳转与重定向

3.1、success() 和 error()$this->success('提示信息','跳转的地址','跳转的时间')。

默认情况下,success() 方式是 1 秒,error() 方法是 3 秒。

3.2、模板

① 默认模板

success() 和 error() 方法,跳转的时候就对应了相应的模板,默认如下:

'TMPL_ACTION_SUCCESS'=>THINK_PATH.'Tpl/dispatch_jump.tpl',

'TMPL_ACTION_ERROR'=>THINK_PATH.'Tpl/dispatch_jump.tpl',

② 自定义成功和错误提示模板页面

'TMPL_ACTION_SUCCESS'=>'Public/success’,

'TMPL_ACTION_ERROR'=>'Public/error’,

③ 对于自定义的提示模板,系统提供一组变量。变量含义

$msgTitle操作标题

$message页面提示信息

$status操作状态 1表示成功 0表示失败

$waitSecond跳转等待时间,单位为秒

$jumpUrl跳转页面地址

模板中使用提示变量

操作标题:{$msgTitle}

3.3、重定向$this->redirect('User/test',['id'=>5],'页面跳转中...');

如果只想纯粹的 URL 跳转,不使用 URL 规则,直接使用 redirect() 函数redirect(‘https://www.lulublog.cn',5','页面跳转中...');

四、其他操作

4.1、I() 变量的获取和过滤

① I('变量类型.变量名',['默认值'],['过滤方法'])变量类型含义

get获取 GET 参数

post获取 POST 参数

params自动判断请求类型获取 GET、POST 或者 PUT 参数

request获取 REQUEST 参数

put获取 PUT 参数

session获取 $_SESSION 参数

cookie获取$_COOKIE 参数

server获取 $_SERVER 参数

globals获取 $_GLOBALS 参数

② 例子I('get.id');  //$_GET['id']

I('get.id',1); //$_GET['id']没有值,则默认1

I('get.');

I('param.id');

I('id'); //param可以省略

PS:取消和开启 URL 的 ’URL_PARAMS_BIND_TYPE‘=>1 配置定义,在访问这个 URL 的时候结果有所不用:http://localhost/demo/User/index/id/5/type/a

关闭 URL 传参顺序:Array([id]=>5 [type]=>1)

开启 URL 传参顺序:Array([0]=>id [1]=>5 [2]=>type [3]=>a)

③ 过滤方法

默认情况下,I() 默认过滤的是:htmlspecialchars,过滤掉 HTML。

过滤HTML,如果去掉了,则传递包含 HTML 的字符串,将不过滤'DEFAULT_FILTER’=>'htmlspecialchars'

屏蔽系统默认的过滤I('get.id','',false); //第三个字符串为空字符串均可

4.2、请求类型常量含义

IS_GET判断是否 GET 请求提交

IS_POST判断是否 POST 请求提交

IS_PUT判断是否 PUT 请求提交

IS_DELTE判断是否 DELTE 请求提交

IS_AJAX判断是否 AJAX 请求提交

4.3、空操作和空控制器

① 空操作

空操作是指系统在找不到请求的操作方法时,会定会到空操作(_empty)方法来执行。利用这个机制,我们实现错误页面和一些 URL 的优化。//如果没有相关方法则执行

public function _empty($name){

echo '找不到方法:',$name;

}

② 空控制器

空控制器是指请求不到指定控制器时,调用一个专门的空控制器。利用这个机制,我们实现错误页面和一些 URL 的优化。class EmptyController extends Controller{

public function index(){

echo '找不到控制器:',CONTROLLER_NAME;

}

}

4.4、操作绑定到类

把每个操作方法定位一个类的功能,即每个把层次分的更加细腻。//设置操作绑定到类

'ACTION_BIND_CLASS’=>true

然后,在 Controller 目录下建立 User 目录,在 User 目录建立 index.class.phpnamespace Home\Controller\User;

user Think\Controller;

class index extends Controller {

public function run(){

echo 'User模块下的index类';

}

}

//前置后置方法public function _before_run(){

echo ‘before_'.ACTION_NAME;

}

public function _after_run(){

echo ‘after_'.ACTION_NAME;

}

空方法,在目录里建立一个 _empty.class.phpclass _empty extends Controller{

public function run(){

echo ’找不到'.ACTION_NAME.'方法';

}

}

空控制器,可以创建一个目录 _empty,然后建立 index.class.phpnamespace Home\Controller\_empty;

user Think\Controller;

class index extends Controller{

public function run(){

echo ’找不到'.CONTROLLER_NAME.'控制器'.ACTION_NAME.'方法';

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值