ThinkPHP6.0 請(qǐng)求
要使用請(qǐng)求對(duì)象必須使用門面方式( think\facade\Request類負(fù)責(zé) )調(diào)用。
ThinkPHP6 請(qǐng)求
要使用請(qǐng)求對(duì)象必須使用門面方式( think\facade\Request類負(fù)責(zé) )調(diào)用
可以通過Request對(duì)象完成全局輸入變量的檢測(cè)、獲取和安全過濾
支持
$_GET
、$_POST
、$_REQUEST
、$_SERVER
、$_SESSION
、$_COOKIE
、$_ENV
等系統(tǒng)變量,以及文件上傳信息
一、變量獲取
方法 | 說明 |
param | 獲取當(dāng)前請(qǐng)求的變量 |
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 請(qǐng)求
PARAM
類型變量是框架提供的用于自動(dòng)識(shí)別當(dāng)前請(qǐng)求的一種變量獲取方式,是系統(tǒng)推薦的獲取請(qǐng)求參數(shù)的方法param
方法會(huì)把當(dāng)前請(qǐng)求類型的參數(shù)和路由變量以及GET請(qǐng)求合并,并且路由變量是優(yōu)先的
controller代碼
public function edit(){
print_r( $_GET ); // 原生get接收
print_r( Request::param() ); // 獲取當(dāng)前請(qǐng)求的所有變量
print_r( Request::param('id') ); // 獲取當(dāng)前請(qǐng)求的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 請(qǐng)求
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">標(biāo)題</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">原價(jià)</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">狀態(tài)</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}>關(guān)閉</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、變量修飾符
序號(hào) | 修飾符 | 作用 |
1 | s | 強(qiáng)制轉(zhuǎn)換為字符串類型 |
2 | d | 強(qiáng)制轉(zhuǎn)換為整型類型 |
3 | b | 強(qiáng)制轉(zhuǎn)換為布爾類型 |
4 | a | 強(qiáng)制轉(zhuǎn)換為數(shù)組類型 |
5 | f | 強(qiáng)制轉(zhuǎn)換為浮點(diǎn)類型 |
Request::get('id/d'); Request::post('name/s'); Request::param('price/f');
二、請(qǐng)求類型
方法 | 說明 |
method | 獲取當(dāng)前請(qǐng)求類型 |
has | 判斷傳值是否存在 |
isGet | 判斷是否GET請(qǐng)求 |
isPost | 判斷是否POST請(qǐng)求 |
isPut | 判斷是否PUT請(qǐng)求 |
isDelete | 判斷是否DELETE請(qǐng)求 |
isAjax | 判斷是否AJAX請(qǐng)求 |
isPjax | 判斷是否PJAX請(qǐng)求 |
isJson | 判斷是否JSON請(qǐng)求 |
isMobile | 判斷是否手機(jī)訪問 |
isHead | 判斷是否HEAD請(qǐng)求 |
isPatch | 判斷是否PATCH請(qǐng)求 |
isOptions | 判斷是否OPTIONS請(qǐng)求 |
isCli | 判斷是否為CLI執(zhí)行 |
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();
}
}
三、示例:增加數(shù)據(jù)
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">標(biāo)題</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">原價(jià)</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">狀態(tài)</label>
<div class="layui-input-inline">
<select name="status">
<option value="1" selected>開啟</option>
<option value="2">關(guān)閉</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>
四、示例:刪除數(shù)據(jù)
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('確定要?jiǎng)h除嗎?', {
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>
五、請(qǐng)求信息
序號(hào) | 方法 | 說明 |
1 | host | 當(dāng)前訪問域名或者IP |
2 | scheme | 當(dāng)前訪問協(xié)議 |
3 | port | 當(dāng)前訪問的端口 |
4 | remotePort | 當(dāng)前請(qǐng)求的REMOTE_PORT |
5 | protocol | 當(dāng)前請(qǐng)求的SERVER_PROTOCOL |
6 | contentType | 當(dāng)前請(qǐng)求的CONTENT_TYPE |
7 | domain | 當(dāng)前包含協(xié)議的域名 |
8 | subDomain | 當(dāng)前訪問的子域名 |
9 | panDomain | 當(dāng)前訪問的泛域名 |
10 | rootDomain | 當(dāng)前訪問的根域名 |
11 | url | 當(dāng)前完整URL |
12 | baseUrl | 當(dāng)前URL(不含QUERY_STRING) |
13 | query | 當(dāng)前請(qǐng)求的QUERY_STRING參數(shù) |
14 | baseFile | 當(dāng)前執(zhí)行的文件 |
15 | root | URL訪問根地址 |
16 | rootUrl | URL訪問根目錄 |
17 | pathinfo | 當(dāng)前請(qǐng)求URL的pathinfo信息(含URL后綴) |
18 | ext | 當(dāng)前URL的訪問后綴 |
19 | time | 獲取當(dāng)前請(qǐng)求的時(shí)間 |
20 | type | 當(dāng)前請(qǐng)求的資源類型 |
21 | method | 當(dāng)前請(qǐng)求類型 |
22 | rule | 當(dāng)前請(qǐng)求的路由對(duì)象實(shí)例 |
23 | controller | 當(dāng)前請(qǐng)求的控制器名 |
24 | action | 當(dāng)前請(qǐng)求的操作名 |
print_r( Request::host() ); print_r( Request::url() ); print_r( Request::controller() ); print_r( Request::action() );
六、HTTP頭信息
HTTP請(qǐng)求頭信息的名稱不區(qū)分大小寫,并且_會(huì)自動(dòng)轉(zhuǎn)換為-
print_r( Request::header() ); print_r( Request::header('accept_encoding') );