[proceso de aprendizaje de thinkphp6] Solicitud de ThinkPHP6

Solicitud de ThinkPHP6

  • Para usar el objeto de solicitud, debe usar el método de fachada (la clase think\facade\Request es responsable) para llamar
  • La detección, adquisición y filtrado de seguridad de variables de entrada globales se puede completar a través del objeto Solicitud
  • apoyo$_GET、$_POST、$_REQUEST、$_SERVER、$_SESSION、$_COOKIE、$_ENV等系统变量,以及文件上传信息

1. Adquisición de variables

número de serie método ilustrar
1 parámetro Obtener las variables de la solicitud actual
2 conseguir Obtener la variable $_GET
3 correo Obtener la variable $_POST
4 poner obtener la variable PUT
5 borrar obtener la variable ELIMINAR
6 sesión obtener variables de sesión
7 Galleta Obtenga la variable $_COOKIE
8 pedido Obtenga la variable $_REQUEST
9 servidor Obtenga la variable $_SERVER
10 env Obtenga la variable $_ENV
11 ruta Obtener variables de ruta (incluyendo PATHINFO)
12 software intermedio Obtener las variables asignadas/pasadas por el middleware
13 archivo Obtenga la variable $_FILES
14 filtrar filtrado de variables
15 solo Obtener algunas variables
dieciséis excepto Excluir algunas variables

1. OBTENER solicitud

  • La variable tipo PARAM es un método de adquisición de variables proporcionado por el marco para identificar automáticamente la solicitud actual, y es el método recomendado por el sistema para obtener los parámetros de la solicitud.
  • El método param combinará los parámetros del tipo de solicitud actual con variables de enrutamiento y solicitudes GET, y se priorizarán las variables de enrutamiento.

código del controlador

public function edit(){
    
    
    print_r( $_GET );    // 原生get接收
    print_r( Request::param() ); // 获取当前请求的所有变量
    print_r( Request::param('id') );    // 获取当前请求的id变量
    print_r( Request::get() );
}

Ver código: 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. Solicitud POST

código del controlador

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'=>'修改失败']);
    }
}

Ver código: 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">标题</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">原价</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">状态</label>
            <div class="layui-input-inline">
                <select name="status">
                    <option value="1" {if $shop['status']==1} selected {/if}>开启</option>
                    <option value="0" {if $shop['status']==0} selected {/if}>关闭</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. Modificadores de variables

número de serie modificador efecto
1 s convertir a tipo de cadena
2 d fundido a un tipo integral
3 b coaccionar al tipo booleano
4 a convertir a tipo de matriz
5 F obligar a tipo flotante
Request::get('id/d');
Request::post('name/s');
Request::param('price/f');

2. Tipo de solicitud

número de serie método ilustrar
1 método Obtener el tipo de solicitud actual
2 tiene Determinar si el valor pasado existe
3 esObtener Determinar si una solicitud GET
4 esPost Determinar si una solicitud POST
5 se pone Determine si la solicitud PUT
6 esBorrar Determinar si ELIMINAR solicitud
7 esAjax Determine si una solicitud AJAX
8 Lo lamento Determinar si una solicitud PJAX
9 esJson Determinar si la solicitud JSON
10 esmóvil Determinar si el acceso al teléfono móvil
11 es la cabeza Determine si la solicitud HEAD
12 isPatch 判断是否PATCH请求
13 isOptions 判断是否OPTIONS请求
14 isCli 判断是否为CLI执行
15 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代码: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">
        <div class="layui-form-item">
            <label class="layui-form-label">标题</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">原价</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">状态</label>
            <div class="layui-input-inline">
                <select name="status">
                    <option value="1" selected>开启</option>
                    <option value="0">关闭</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>

四、示例:删除数据

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代码:edit.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('确定要删除吗?', {
      
      
            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>

五、请求信息

序号 方法 说明
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') );

Supongo que te gusta

Origin blog.csdn.net/qzmlyshao/article/details/131097499
Recomendado
Clasificación