Thinkphp 控制器

本文详细介绍了ThinkPHP框架中控制器的重定向操作,包括停留时间设定和URL变化。此外,还讲解了页面跳转的success和error方法,以及如何获取和过滤输入变量。接着,讨论了变量修饰符的使用,并展示了如何判断请求类型。最后,通过实例展示了如何利用空操作实现城市切换功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

重定向

$this->redirect('New/cate', array('id'=>2), 5, '跳转中。。。。');//停留5秒后跳转到New

模块的cate操作,并显示页面信息,重定向 后会改变当前URL地址

如果只是重定向 一个指定 的URL志趣,而不是到某个模块的操作方法,直接使用redirect函数

重定向,例:redirect('/New/cate/id/2' , 5, '.....');

页面跳转

$this->success('添加成功', '/User/index');//设置成功后跳转页面地址,默认返回页面是$_SERVER['HTTP_REFERER'];

$this->error('添加失败');//错误页面默认跳转是返回上一页

输入变量

I('get.id', 0);//如果不存在$_GET['id'],返回0   I('get.id');//相当于$_GET['id']

 

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

直接获取整个$_GET数组  I('get.');

I('param . id');//param类型是I函数默认获取变量的类型,,等同于I('id');

path类型变量可以获取URL参数(必须是PATHINFO模式参数),例:

http://serverName/index.php/New/2013/06/01

echo I('path.1');//输出2013

echo I('path.2');//输出06

echo I('path.3');//输出01

变量过滤

// 系统默认的变量过滤机制
'DEFAULT_FILTER'        => 'htmlspecialchars'

参数也可以设置支持多个过滤

 

'DEFAULT_FILTER'        => 'strip_tags,htmlspecialchars'

还可以支持进行正则匹配过滤,例如:

// 采用正则表达式进行变量过滤
I('get.name','','/^[A-Za-z]+$/');
I('get.id',0,'/^\d+$/');

变量修饰符

I('变量类型.变量名/修饰符')

例如:

I('get.id/d'); // 强制变量转换为整型
I('post.name/s'); // 强制转换变量为字符串类型
I('post.ids/a'); // 强制变量转换为数组类型

判断请求类型

系统内置了一些常量用于判断请求类型,包括:

常量说明
IS_GET判断是否是GET方式提交
IS_POST判断是否是POST方式提交
IS_PUT判断是否是PUT方式提交
IS_DELETE判断是否是DELETE方式提交
IS_AJAX判断是否是AJAX提交
REQUEST_METHOD当前提交类型

使用举例如下:

class UserController extends Controller{
     public function update(){
         if (IS_POST){
             $User = M('User');
             $User->create();
             $User->save();
             $this->success('保存完成');
         }else{
             $this->error('非法请求');
         }
     }
}

空操作是指系统在找不到请求的操作方法的时候,会定位到空操作(_empty)方法来执行

 

例如,下面我们用空操作功能来实现一个城市切换的功能。 我们只需要给CityController类定义一个_empty(空操作)方法:

<?php
namespace Home\Controller;
use Think\Controller;
class CityController extends Controller{
    public function _empty($name){
        //把所有城市的操作解析到city方法
        $this->city($name);
    }

    //注意 city方法 本身是 protected 方法
    protected function city($name){
        //和$name这个城市相关的处理
         echo '当前城市' . $name;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值