ThinkPHP6 请求

794次阅读
没有评论
  • 要使用请求对象必须使用门面方式( 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="0" {if $shop['status']==0} 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>

二、请求类型

方法 说明
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 代码: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"> <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="0"> 关闭 </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 代码:edit.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>
正文完
 0
飞翔的mouse
版权声明:本站原创文章,由 飞翔的mouse 于2020-03-28发表,共计7211字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。