ThinkPHP6.0 請求


ThinkPHP6 請求

  • 要使用請求物件必須使用門面方式(think\facade\Request類別負責)呼叫

  • 可以透過Request物件完成全域輸入變數的偵測、取得與安全性篩選

  • 支援$_GET$_POST$_REQUEST$_SERVER$_SESSION$_COOKIE$_ENV等系統變量,以及檔案上傳資訊

一、變數取得

#env 取得$_ENV 變數
方法說明
param取得目前請求的變數
get取得$_GET 變數
post 取得$_POST 變數
put 取得PUT 變數
delete #取得DELETE 變數
session 取得SESSION 變數
cookie 取得$_COOKIE 變數
request 取得$_REQUEST 變數
server 取得$_SERVER 變數
####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,

#          

            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>##########################################。

    <標題>

   

   

#

   

#       

       

            ##卷"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、變數修飾符

序號

修飾符

作用

#1 s 強制轉換為字串型別2d 強制轉換成整數型別3 b 強制轉換為布林類型4 a #強制轉換為陣列類型5f #強制轉換為浮點數型別##


Request::get('id/d');
Request::post('name/s');
Request::param('price/f');

二、請求類型

取得目前請求類型判斷傳值是否存在判斷是否GET請求判斷是否為POST請求##isPut 判斷是否PUT請求isDelete 判斷是否DELETE請求isAjax #判斷是否AJAX請求isPjax 判斷是否PJAX請求isJson 判斷是否JSON請求
#方法說明
method 
has 
isGet
isPost 
#########isMobile ######判斷是否手機存取############isHead ######判斷是否HEAD請求########################################################################################################################################### ######isPatch ######判斷是否為PATCH請求#############isOptions ######判斷是否OPTIONS請求###################################################### ##isCli ######判斷是否為CLI執行############isCgi ######判斷是否為CGI模式############

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( ){

## 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() ;

       :::::00([##」檢視分配

#            '貓' => $cat

        ]);

        return View::fetch();

###    }#######}#########view程式碼:add.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

#< Button class="layui-btnlayui-btn- dangerlayui-btn-xs" onclick="del({$right_v.id})">刪除

<腳本類型= "text/javascript">

    function del( id){

        layer.confirm('確定刪除嗎?', {

            icon:3,

##   #  tn

##        }, function(){

            $.post('/index.php/index/del',{' id':id},function(res){

                if(res.code>0){

                    下的##

                    layer.msg(res.msg);

              一天          }

},'json');

        });

#    }

##

五、請求訊息

##9  #panDomain 目前造訪的泛網域###10 ######rootDomain ######目前造訪的根網域########rootDomain ######目前造訪的根網域######
序號#方法說明
1host 目前存取網域或IP
#2 scheme 目前存取協議
port 目前存取的連接埠
4remotePort 目前請求的REMOTE_PORT
5#protocol 目前要求的SERVER_PROTOCOL
#6contentType 目前請求的CONTENT_TYPE
domain #目前包含協定的網域名稱
subDomain #目前造訪的子網域
11 url目前完整URL
#12 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') );