ThinkPHP6.0 请求
ThinkPHP6 请求
要使用请求对象必须使用门面方式( thinkfacadeRequest类负责 )调用
可以通过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>
<标题>标题>
<脚本类型= "text/javascript" src="/static/layui/layui.js"></script>
</head>
<body style="padding:10px;">
<; form class="layui-form">
标题
<选择名称= "cat">
<选项值=0 {if $shop['cat']==0} 选择 {/if}></option>
{volist name="cat" id=" cat_v"}
{/volist}
分区>
;
< /div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">库存</label>
;
&lt;/div&gt&lt; div class =“ layui-form-item”&gt; gt; label class class =“ layui-form-label” class="layui-input-inline">
选择>
;
<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());退出;
$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: :方法() == '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() ;
查看::分配([
'猫' =>; $cat
]);
return View::fetch();
}
}
view代码:add.html
<html>
< ;头>
<标题>标题>
</身体>
</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'=>'删除失败']);
}
}
查看代码:index.html
<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');
});
}
脚本>
五、请求信息
序号 方法 说明 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') );