tp6学习第六步

ThinkPHP6 请求
要使用请求对象必须使用门面方式( think\facade\Request类负责 )调用
可以通过Request对象完成全局输入变量的检测、获取和安全过滤
支持 G E T 、 _GET、 GET_POST、 R E Q U E S T 、 _REQUEST、 REQUEST_SERVER、 S E S S I O N 、 _SESSION、 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

<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 请求
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">标题</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>

二、请求类型
方法 说明

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代码: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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TP6的svalidate方法是ThinkPHP6框架中用于验证数据的方法。该方法可以在控制器或模型中使用,用于对用户输入的数据进行验证,以确保数据的合法性和完整性。 在TP6中,可以通过以下步骤来使用svalidate方法: 1. 首先,在控制器或模型中引入验证器类的命名空间,例如: use app\validate\User; 2. 然后,创建一个验证器对象,例如: $validate = new User; 3. 接下来,使用svalidate方法对数据进行验证,例如: $result = $validate->svalidate($data); 其中$data是要验证的数据,$result是验证结果,如果验证通过,$result将返回true,否则将返回错误信息。 需要注意的是,TP6的验证器类需要事先定义好验证规则和错误提示信息。你可以在验证器类中使用规则和消息方法来定义验证规则和错误提示信息。例如: public function rule() { return [ 'username' => 'require|max:25', 'password' => 'require|min:6', ]; } public function message() { return [ 'username.require' => '用户名不能为空', 'username.max' => '用户名长度不能超过25个字符', 'password.require' => '密码不能为空', 'password.min' => '密码长度不能小于6个字符', ]; } 通过以上步骤,你就可以在TP6中使用svalidate方法对数据进行验证了。如果验证通过,可以继续处理业务逻辑;如果验证失败,则可以返回错误信息给用户。 总结一下,TP6的svalidate方法是用于数据验证的方法,可以通过引入验证器类、创建验证器对象和使用svalidate方法对数据进行验证,以确保数据的合法性和完整性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值