您现在的位置是:网站首页> php专栏 扩展知识

php后台列表使用layui switch开关

亦然2019-09-28 13:56:17扩展知识人已围观

简介switch开关是后台必不可少的一个html组件。本文记录一下我常用的通过layui来实现状态切换的方法。

在后台开发中,经常用到的就是使用开关控制状态的改变,便于管理。效果如下:

示例代码如下:

1.后台列表页面引入layui资源文件,可以使用layui的cdn地址。

2.列表页面

  列表新增一行,用来显示状态。

<td>
<form class="layui-form" action="">
   <input type="checkbox" {if condition="$vo.pay_status eq 1"} checked {/if} name="switch" lay-skin="switch" lay-filter="switchTest" data-url="{:url('news_log/field',array('ids'=>$vo.id))}" lay-text="已支付|未支付">
</form>
</td>

js渲染switch开关,并处理响应事件。

<script>
 layui.use(['form'], function(){
  var form = layui.form
   ,layer = layui.layer
  //监听指定开关
  form.on('switch(switchTest)', function(data){
         var url = $(this).data('url');
         var status = data.elem.checked;//开关是否开启,true或者false
            //后台我需要的是0或1,所以预先在js中处理change的值
            if(status) {
                status = 1;
            } else {
                status = 0;
            }
            $.post(url, {status: status}, function(res) {
                if(res.code) {
                    layer.msg(res.msg);
                }
            });
        });
 });
</script>

js

3.控制器中处理事件,并返回处理结果。
 public function field()
    {
        if ($this->request->isPost()) {
            $data['id'] = $this->request->param('ids');
            $data['status'] = $this->request->param('status');
            //更新数据
            $result = Db::name('news_log')->where('id',$data['id'])->update(array('pay_status'=>$data['status']));
            if ($result) {
                $msg = '状态设置成功';
                return json(['code'=>1,'msg'=>$msg]);
            }else{
            $res['code'] = 0;
            $res['msg'] = '这是个意外!';
            return $res;
        }
        }
    }

补充:swith也可以增加一个询问框,当用户点击更改状态时,会让用户确认是否更改。效果如下:


实现代码如下:

 layui.use(['form', 'jquery', 'layer'], function () {
            var form = layui.form;
            var jquery = layui.jquery;
            var layer = layui.layer;
            //监听开关事件
            form.on('switch(switchTest)', function (data) {
                var url = $(this).data('url');
                var contexts;
                var x = data.elem.checked;//判断开关状态
                if (x==true) {
                    contexts = "你确定要启动么";
                    status = 1;
                } else {
                    contexts = "你确定要关闭么";
                    status = 0;
                }
                layer.open({
                    content: contexts
                    , btn: ['确定', '取消']
                    , yes: function (index, layero) {
                        $.post(url, {status: status}, function(res) {
                            if(res.code) {
                                layer.msg(res.msg);
                            }
                        });
                        //按钮【按钮一】的回调
                    }
                    , btn2: function (index, layero) {
                        //按钮【按钮二】的回调
                         $.post(url, {status: status}, function(res) {
                            if(res.code) {
                                layer.msg(res.msg);
                            }
                        });
                        //return false 开启该代码可禁止点击该按钮关闭
                    }
                    , cancel: function () {
                        //右上角关闭回调
                        data.elem.checked = !x;
                        form.render();
                        //return false 开启该代码可禁止点击该按钮关闭
                    }
                });
                return false;
            });
        });
js

很赞哦!()

文章评论

    请先说点什么
    热门评论
    人参与,0条评论
亦然

亦然(共33篇文章)

愿你我既可以朝九晚五,也可以浪迹天涯;愿你我既可以拈花把酒,也能围炉诗书茶。