# ThinkPHP6.0 請求
要使用請求對象必須使用門面方式( 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
> 編輯
>
>
>
>
>
> ? ? function edit(id){
>
> ? ? ? ? layer.open({
>
> ? ? ? ? ? ? type: 2,
>
> ? ? ? ? ? ? title: '添加',
>
> ? ? ? ? ? ? shade: 0.3,
>
> ? ? ? ? ? ? area: \['480px', '440px'\],
>
> ? ? ? ? ? ? content: '/index.php/index/edit?id='+id
>
> ? ? ? ? });
>
> ? ? }
>
>
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
>
>
>
>
>
>
> ? ?
>
> ? ?
>
> ? ?
>
>
>
>
>
> ? ?
>
> ? ? ? ?
>
> ? ? ? ?
>
> ? ? ? ? ? ? 標題
>
> ? ? ? ? ? ?
>
> ? ? ? ? ? ? ? ?
>
> ? ? ? ? ? ?
>
> ? ? ? ?
>
> ? ? ? ?
>
> ? ? ? ? ? ? 分類
>
> ? ? ? ? ? ?
>
> ? ? ? ? ? ? ? ?
>
> ? ? ? ? ? ? ? ? ? ?
>
> ? ? ? ? ? ? ? ? ? ? {volist name="cat" id="cat\_v"}
>
> ? ? ? ? ? ? ? ? ? ? ? ? {$cat\_v\['name'\]}
>
> ? ? ? ? ? ? ? ? ? ? {/volist}
>
> ? ? ? ? ? ? ? ?
>
> ? ? ? ? ? ?
>
> ? ? ? ?
>
> ? ? ? ?
>
> ? ? ? ? ? ? 原價
>
> ? ? ? ? ? ?
>
> ? ? ? ? ? ? ? ?
>
> ? ? ? ? ? ?
>
> ? ? ? ?
>
> ? ? ? ?
>
> ? ? ? ? ? ? 折扣
>
> ? ? ? ? ? ?
>
> ? ? ? ? ? ? ? ?
>
> ? ? ? ? ? ?
>
> ? ? ? ?
>
> ? ? ? ?
>
> ? ? ? ? ? ? 庫存
>
> ? ? ? ? ? ?
>
> ? ? ? ? ? ? ? ?
>
> ? ? ? ? ? ?
>
> ? ? ? ?
>
> ? ? ? ?
>
> ? ? ? ? ? ? 狀態
>
> ? ? ? ? ? ?
>
> ? ? ? ? ? ? ? ?
>
> ? ? ? ? ? ? ? ? ? ? 開啟
>
> ? ? ? ? ? ? ? ? ? ? 關閉
>
> ? ? ? ? ? ? ? ?
>
> ? ? ? ? ? ?
>
> ? ? ? ?
>
> ? ?
>
> ? ?
>
> ? ? ? ?
>
> ? ? ? ? ? ? 保存
>
> ? ? ? ?
>
> ? ?
>
> ? ?
>
> ? ? ? ? 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');
>
> ? ? ? ? }
>
> ? ?
>
>
>
>
3、變量修飾符
序號修飾符作用1 s 強制轉換為字符串類型2d 強制轉換為整型類型3 b 強制轉換為布爾類型4 a 強制轉換為數組類型5f 強制轉換為浮點類型
~~~
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
>
>
>
>
>
>
> ? ?
>
> ? ?
>
> ? ?
>
>
>
>
>
> ? ?
>
> ? ? ? ?
>
> ? ? ? ? ? ? 標題
>
> ? ? ? ? ? ?
>
> ? ? ? ? ? ? ? ?
>
> ? ? ? ? ? ?
>
> ? ? ? ?
>
> ? ? ? ?
>
> ? ? ? ? ? ? 分類
>
> ? ? ? ? ? ?
>
> ? ? ? ? ? ? ? ?
>
> ? ? ? ? ? ? ? ? ? ?
>
> ? ? ? ? ? ? ? ? ? ? {volist name="cat" id="cat\_v"}
>
> ? ? ? ? ? ? ? ? ? ? ? ? {$cat\_v\['name'\]}
>
> ? ? ? ? ? ? ? ? ? ? {/volist}
>
> ? ? ? ? ? ? ? ?
>
> ? ? ? ? ? ?
>
> ? ? ? ?
>
> ? ? ? ?
>
> ? ? ? ? ? ? 原價
>
> ? ? ? ? ? ?
>
> ? ? ? ? ? ? ? ?
>
> ? ? ? ? ? ?
>
> ? ? ? ?
>
> ? ? ? ?
>
> ? ? ? ? ? ? 折扣
>
> ? ? ? ? ? ?
>
> ? ? ? ? ? ? ? ?
>
> ? ? ? ? ? ?
>
> ? ? ? ?
>
> ? ? ? ?
>
> ? ? ? ? ? ? 庫存
>
> ? ? ? ? ? ?
>
> ? ? ? ? ? ? ? ?
>
> ? ? ? ? ? ?
>
> ? ? ? ?
>
> ? ? ? ?
>
> ? ? ? ? ? ? 狀態
>
> ? ? ? ? ? ?
>
> ? ? ? ? ? ? ? ?
>
> ? ? ? ? ? ? ? ? ? ? 開啟
>
> ? ? ? ? ? ? ? ? ? ? 關閉
>
> ? ? ? ? ? ? ? ?
>
> ? ? ? ? ? ?
>
> ? ? ? ?
>
> ? ?
>
> ? ?
>
> ? ? ? ?
>
> ? ? ? ? ? ? 保存
>
> ? ? ? ?
>
> ? ?
>
> ? ?
>
> ? ? ? ? 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');
>
> ? ? ? ? }
>
> ? ?
>
>
>
>
## 四、示例:刪除數據
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
> 刪除
>
>
>
> ? ? 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');
>
> ? ? ? ? });
>
> ? ? }
>
>
## 五、請求信息
序號方法說明1host 當前訪問域名或者IP2 scheme 當前訪問協議3 port 當前訪問的端口4remotePort當前請求的REMOTE_PORT5protocol 當前請求的SERVER_PROTOCOL6contentType 當前請求的CONTENT_TYPE7 domain 當前包含協議的域名8 subDomain 當前訪問的子域名9 panDomain 當前訪問的泛域名10 rootDomain 當前訪問的根域名11 url當前完整URL12 baseUrl 當前URL(不含QUERY_STRING)13 query 當前請求的QUERY_STRING參數14 baseFile 當前執行的文件15root 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')?);
~~~