ThinkPHP6.0快速开发手册(案例版)

浏览190943
更新时间2022-04-28

要使用请求对象必须使用门面方式( think\facade\Request类负责 )调用。

ThinkPHP6 请求

  • 要使用请求对象必须使用门面方式( think\facade\Request类负责 )调用

  • 可以通过Request对象完成全局输入变量的检测、获取和安全过滤

  • 支持$_GET、$_POST、$_REQUEST、$_SERVER、$_SESSION、$_COOKIE、$_ENV等系统变量,以及文件上传信息

一、变量获取

方法 说明
param 获取当前请求的变量
get 获取 $_GET 变量
post  获取 $_POST 变量
put  获取 PUT 变量
delete  获取 DELETE 变量
session  获取 SESSION 变量
cookie  获取 $_COOKIE 变量
request  获取 $_REQUEST 变量
server  获取 $_SERVER 变量
env  获取 $_ENV 变量
route  获取 路由(包括PATHINFO) 变量
middleware  获取 中间件赋值/传递的变量
file  获取 $_FILES 变量

1、GET 请求

  • PARAM类型变量是框架提供的用于自动识别当前请求的一种变量获取方式,是系统推荐的获取请求参数的方法

  • param方法会把当前请求类型的参数和路由变量以及GET请求合并,并且路由变量是优先的

controller代码

public function edit(){

    print_r( $_GET );    // 原生get接收

    print_r( Request::param() ); // 获取当前请求的所有变量

    print_r( Request::param('id') );    // 获取当前请求的id变量

    print_r( Request::get() );

}

view代码:index.html

<button class="layui-btn layui-btn-xs" onclick="edit({$right_v.id})">编辑</button>


<script type="text/javascript">

    function edit(id){

        layer.open({

            type: 2,

            title: '添加',

            shade: 0.3,

            area: ['480px', '440px'],

            content: '/index.php/index/edit?id='+id

        });

    }

</script>

2、POST 请求

controller代码

public function edit(){

    $id = Request::param('id');

    $shop = Db::table('shop_goods')->where('id',$id)->find();

    $cat = Db::table('shop_cat')->where('status',1)->select();

    View::assign([

        'shop' => $shop,

        'cat' => $cat

    ]);

    return View::fetch();

}

public function edits(){

    // print_r( Request::param() );

    // print_r( Request::post() );


    $all = Request::param();

    $update = Db::table('shop_goods')->where('id',$all['id'])->update($all);

    if($update){

        echo json_encode(['code'=>0,'msg'=>'修改成功']);

    }else{

        echo json_encode(['code'=>1,'msg'=>'修改失败']);

    }

}

view代码:edit.html

<!DOCTYPE html>

<html>

<head>

    <title></title>

    <link rel="stylesheet" type="text/css" href="/static/layui/css/layui.css">

    <script type="text/javascript" src="/static/layui/layui.js"></script>

</head>

<body style="padding:10px;">

    <form class="layui-form">

        <input type="hidden" name="id" value="{$shop.id}">

        <div class="layui-form-item">

            <label class="layui-form-label">标题</label>

            <div class="layui-input-inline">

                <input type="text" class="layui-input" name="title" value="{$shop.title}">

            </div>

        </div>

        <div class="layui-form-item">

            <label class="layui-form-label">分类</label>

            <div class="layui-input-inline">

                <select name="cat">

                    <option value=0 {if $shop['cat']==0} selected {/if}></option>

                    {volist name="cat" id="cat_v"}

                        <option value="{$cat_v['id']}" {if $shop['cat']==$cat_v['id']} selected {/if}>{$cat_v['name']}</option>

                    {/volist}

                </select>

            </div>

        </div>

        <div class="layui-form-item">

            <label class="layui-form-label">原价</label>

            <div class="layui-input-inline">

                <input type="text" class="layui-input" name="price" value="{$shop.price}">

            </div>

        </div>

        <div class="layui-form-item">

            <label class="layui-form-label">折扣</label>

            <div class="layui-input-inline">

                <input type="text" class="layui-input" name="discount" value="{$shop.discount}">

            </div>

        </div>

        <div class="layui-form-item">

            <label class="layui-form-label">库存</label>

            <div class="layui-input-inline">

                <input type="text" class="layui-input" name="stock" value="{$shop.stock}">

            </div>

        </div>

        <div class="layui-form-item">

            <label class="layui-form-label">状态</label>

            <div class="layui-input-inline">

                <select name="status">

                    <option value="1" {if $shop['status']==1} selected {/if}>开启</option>

                    <option value="2" {if $shop['status']==2} selected {/if}>关闭</option>

                </select>

            </div>

        </div>

    </form>

    <div class="layui-form-item">

        <div class="layui-input-block">

            <button class="layui-btn" onclick="save()">保存</button>

        </div>

    </div>

    <script type="text/javascript">

        layui.use(['layer','form'],function(){

            form = layui.form;

            layer = layui.layer;

            $ = layui.jquery;

        });

        function save(){

            $.post('/index.php/Index/edits',$('form').serialize(),function(res){

                if(res.code>0){

                    layer.alert(res.msg,{icon:2});

                }else{

                    layer.msg(res.msg);

                    setTimeout(function(){parent.window.location.reload();},1000);

                }

            },'json');

        }

    </script>

</body>

</html>

3、变量修饰符

序号 修饰符 作用
1  s  强制转换为字符串类型
2 d  强制转换为整型类型
3  b  强制转换为布尔类型
4  a  强制转换为数组类型
5 f  强制转换为浮点类型


Request::get('id/d');
Request::post('name/s');
Request::param('price/f');

二、请求类型

方法 说明
method  获取当前请求类型
has  判断传值是否存在
isGet  判断是否GET请求
isPost  判断是否POST请求
isPut  判断是否PUT请求
isDelete  判断是否DELETE请求
isAjax  判断是否AJAX请求
isPjax  判断是否PJAX请求
isJson  判断是否JSON请求
isMobile  判断是否手机访问
isHead  判断是否HEAD请求
isPatch  判断是否PATCH请求
isOptions  判断是否OPTIONS请求
isCli  判断是否为CLI执行
isCgi  判断是否为CGI模式

1、method

public function edit(){

    if(Request::method() == 'POST'){

        // print_r(Request::method());exit;

        $all = Request::param();

        $update = Db::table('shop_goods')->where('id',$all['id'])->update($all);

        if($update){

            echo json_encode(['code'=>0,'msg'=>'修改成功']);

        }else{

            echo json_encode(['code'=>1,'msg'=>'修改失败']);

        }

    }else{

        // print_r(Request::method());exit;

        $id = Request::param('id');

        $shop = Db::table('shop_goods')->where('id',$id)->find();

        $cat = Db::table('shop_cat')->where('status',1)->select();

        View::assign([

            'shop' => $shop,

            'cat' => $cat

        ]);

        return View::fetch();

    }

}

三、示例:增加数据

controller代码

public function add(){

    if(Request::method() == 'POST'){

        $all = Request::param();

        $insert = Db::table('shop_goods')->insert($all);

        if($insert){

            echo json_encode(['code'=>0,'msg'=>'添加成功']);

        }else{

            echo json_encode(['code'=>1,'msg'=>'添加失败']);

        }

    }else{

        $cat = Db::table('shop_cat')->where('status',1)->select();

        View::assign([

            'cat' => $cat

        ]);

        return View::fetch();

    }

}

view代码:add.html

<!DOCTYPE html>

<html>

<head>

    <title></title>

    <link rel="stylesheet" type="text/css" href="/static/layui/css/layui.css">

    <script type="text/javascript" src="/static/layui/layui.js"></script>

</head>

<body style="padding:10px;">

    <form class="layui-form">

        <div class="layui-form-item">

            <label class="layui-form-label">标题</label>

            <div class="layui-input-inline">

                <input type="text" class="layui-input" name="title" value="">

            </div>

        </div>

        <div class="layui-form-item">

            <label class="layui-form-label">分类</label>

            <div class="layui-input-inline">

                <select name="cat">

                    <option value=0 selected></option>

                    {volist name="cat" id="cat_v"}

                        <option value="{$cat_v['id']}">{$cat_v['name']}</option>

                    {/volist}

                </select>

            </div>

        </div>

        <div class="layui-form-item">

            <label class="layui-form-label">原价</label>

            <div class="layui-input-inline">

                <input type="text" class="layui-input" name="price" value="">

            </div>

        </div>

        <div class="layui-form-item">

            <label class="layui-form-label">折扣</label>

            <div class="layui-input-inline">

                <input type="text" class="layui-input" name="discount" value="">

            </div>

        </div>

        <div class="layui-form-item">

            <label class="layui-form-label">库存</label>

            <div class="layui-input-inline">

                <input type="text" class="layui-input" name="stock" value="">

            </div>

        </div>

        <div class="layui-form-item">

            <label class="layui-form-label">状态</label>

            <div class="layui-input-inline">

                <select name="status">

                    <option value="1" selected>开启</option>

                    <option value="2">关闭</option>

                </select>

            </div>

        </div>

    </form>

    <div class="layui-form-item">

        <div class="layui-input-block">

            <button class="layui-btn" onclick="save()">保存</button>

        </div>

    </div>

    <script type="text/javascript">

        layui.use(['layer','form'],function(){

            form = layui.form;

            layer = layui.layer;

            $ = layui.jquery;

        });

        function save(){

            $.post('/index.php/Index/add',$('form').serialize(),function(res){

                if(res.code>0){

                    layer.alert(res.msg,{icon:2});

                }else{

                    layer.msg(res.msg);

                    setTimeout(function(){parent.window.location.reload();},1000);

                }

            },'json');

        }

    </script>

</body>

</html>

四、示例:删除数据

controller代码

public function del(){

    $id = Request::param('id');

    $delete = Db::table('shop_goods')->where('id',$id)->delete();

    if($delete){

        echo json_encode(['code'=>0,'msg'=>'删除成功']);

    }else{

        echo json_encode(['code'=>1,'msg'=>'删除失败']);

    }

}

view代码:index.html

<button class="layui-btn layui-btn-danger layui-btn-xs" onclick="del({$right_v.id})">删除</button>

<script type="text/javascript">

    function del(id){

        layer.confirm('确定要删除吗?', {

            icon:3,

            btn: ['确定','取消']

        }, function(){

            $.post('/index.php/index/del',{'id':id},function(res){

                if(res.code>0){

                    layer.alert(res.msg,{icon:2});

                }else{

                    layer.msg(res.msg);

                    setTimeout(function(){window.location.reload();},1000);

                }

            },'json');

        });

    }

</script>

五、请求信息

序号 方法 说明
1 host  当前访问域名或者IP
2  scheme  当前访问协议
3  port  当前访问的端口
4 remotePort 当前请求的REMOTE_PORT
5 protocol  当前请求的SERVER_PROTOCOL
6 contentType  当前请求的CONTENT_TYPE
7  domain  当前包含协议的域名
8  subDomain  当前访问的子域名
9  panDomain  当前访问的泛域名
10  rootDomain  当前访问的根域名
11  url 当前完整URL
12  baseUrl  当前URL(不含QUERY_STRING)
13  query  当前请求的QUERY_STRING参数
14  baseFile  当前执行的文件
15 root  URL访问根地址
16  rootUrl  URL访问根目录
17  pathinfo  当前请求URL的pathinfo信息(含URL后缀)
18  ext  当前URL的访问后缀
19  time  获取当前请求的时间
20  type  当前请求的资源类型
21  method  当前请求类型
22  rule  当前请求的路由对象实例
23  controller  当前请求的控制器名
24  action  当前请求的操作名
print_r( Request::host() );
print_r( Request::url() );
print_r( Request::controller() );
print_r( Request::action() );

六、HTTP头信息

  • HTTP请求头信息的名称不区分大小写,并且_会自动转换为-

print_r( Request::header() );
print_r( Request::header('accept_encoding') );

相关视频

更多

免费

php8,我来也
初级php8,我来也

34万次学习

收藏

免费

Thinkphp6.0正式版视频教程
中级Thinkphp6.0正式版视频教程

39.6万次学习

收藏

免费

细说PHP第一季
中级细说PHP第一季

31万次学习

收藏

精品课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时

65万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时

41.3万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时

76.8万人学习

独孤九贱(1)_HTML5视频教程
独孤九贱(1)_HTML5视频教程

共25课时

64.2万人学习

独孤九贱(2)_CSS视频教程
独孤九贱(2)_CSS视频教程

共22课时

24.4万人学习

独孤九贱(3)_JavaScript视频教程
独孤九贱(3)_JavaScript视频教程

共28课时

36.3万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时

133.5万人学习

热门下载

更多
phpStudy 2018最新版
phpStudy 2018最新版

集成PHP7,16种组合,超全大合集

下载

VC9 32位
VC9 32位

VC9 32位 phpstudy集成安装环境运行库

下载

VC11 32位
VC11 32位

VC11 32位 phpstudy集成安装环境运行库​

下载

php程序员工具箱完整版
php程序员工具箱完整版

程序员工具箱 v1.0 php集成环境

下载

VC14 32位
VC14 32位

VC14 32位 phpstudy安装环境运行库

下载

SublimeText3汉化版
SublimeText3汉化版

中文版,非常好用

下载

Notepad++ Windows版
Notepad++ Windows版

Notepad++ 8.9.7 Windows版官方安装包,适合 Windows 用户进行代码编辑、文本处理、语法高亮和插件扩展配置。

下载