ThinkPHP6.0 請求
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 變數 |
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,
# shade: 0.3, area: ['480px', '440px'],##
});
}
</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 'cat' => $cat# 'cat' => $cat#
##HH ## ]); 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>##########################################。<標題>標題>
#
<選項值=0 { if $shop['cat']==0} 已選擇{/if }></option>
{volist name="cat" id="cat_v"}
"}
#############' <選項值="{$cat_v['id']}" { if $shop['cat']==$cat_v['id']} 選擇了{/if}>{$cat_v['name']} </option>###### {/volist}# #####
## div # class="layui-input-inline"> ##'
</div>
</div>
< ;input type="text" class="layuiin type=" ="discount" value="{$shop.discount}">
< /div>
## item">#
## class="layui-input-inline"> <選擇名稱=「status」>
### 1 # 已選擇{/if}>開啟 ;###### ###### 選擇>######
##################################################################################################################################' ### ######
<script type="text/javascript">
layui.use(['layer','form'],function(){
##o form form = layui.form; layer = layui.layer; $ = layui.jquery#
## $.post('/index.php/Index/edits',$('form').serialize(),function(res){ { layer.alert(res.msg,{icon:2}); layer.msg(res.msg); setTimeout(function(){parent.window.location.reload();},1000); ; } </script></body></html>3、變數修飾符
序號修飾符作用
s | 強制轉換為字串型別 | |
d | 強制轉換成整數型別 | |
b | 強制轉換為布林類型 | |
a | #強制轉換為陣列類型 | |
f | #強制轉換為浮點數型別 |
#方法 | 說明 |
method | |
has | |
isGet | |
isPost | |
##isPut | |
isDelete | |
isAjax | |
isPjax | |
isJson |
1、方法
public function edit(){
# if(Request::method() == 'POST'){
# // print_r(Request::method());exit;
$all = Request::param();
$update = Db::table('shop_goods# $update = Db::table('shop_goods)' - >where('id',$all['id'])->update($all);
if($update){
# echo json_
## >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,
'cat' => $cat
]);
return View#fetch();
# return 1}
#三、範例:增加資料
controller程式碼
public function add( ){echo json_encode(['code'=>1,'msg'=>'新增失敗']);### if(Request::method() == 'POST'){
$all = Request::param();
$insert = Db: :table('shop_goods')- >insert($all);
if($insert){
echo json_encode(['code'=>0,'msg'= >'新增成功']);
}else{
# else{
$cat = Db::table('shop_cat')->where('status',1)->select() ; :::::00([##」檢視分配$id = Request::param('id'); $delete = Db ::table(' shop_goods')->where('id',$id)->delete(); if($delete){# '貓' => $cat
]);
return View::fetch();
### }#######}#########view程式碼:add.html########################## <標題>< ;/標題># ##
#四、範例:刪除資料
controller程式碼
##public function del(){
function del( id){ layer.confirm('確定刪除嗎?', {echo json_encode([' code'=>0,' msg'=>'刪除成功']);
}else{
# echo json_encode(['code'=>1,'msg' =>'刪除失敗']);
}
}
#檢視程式碼:index.html#< Button class="layui-btnlayui-btn- dangerlayui-btn-xs" onclick="del({$right_v.id})">刪除
<腳本類型= "text/javascript">
icon:3,
## # tn## }, function(){
$.post('/index.php/index/del',{' id':id},function(res){
if(res.code>0){
下的##
layer.msg(res.msg);
一天 }
},'json');
});
# }
##
五、請求訊息
序號 | #方法 | 說明 |
1 | host | 目前存取網域或IP |
#2 | scheme | 目前存取協議 |
3 | port | 目前存取的連接埠 |
4 | remotePort | 目前請求的REMOTE_PORT |
5 | #protocol | 目前要求的SERVER_PROTOCOL |
#6 | contentType | 目前請求的CONTENT_TYPE |
7 | domain | #目前包含協定的網域名稱 |
8 | subDomain | #目前造訪的子網域 |
#panDomain | 目前造訪的泛網域 | |
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頭資訊
print_r( Request::header() ); print_r( Request::header('accept_encoding') );