nodetree多级分类展示

效果如下

 

1.基于TP5代码

需要准备几个js文件

<script src="/static/js/jquery-1.4.4.min.js" charset="utf-8"></script>
<script src="/static/js/common.js" charset="utf-8"></script>
<script src="/static/js/jquery.ztree.core.js" charset="utf-8"></script>
<script src="/static/js/jquery.ztree.excheck.js" charset="utf-8"></script>

2.目录路径

 

相关控制器代码

goodsclass.php

<?php
/**
 * User: xym
 * Date: 2018/9/20
 * Time: 上午8:53
 */
namespace app\index\controller;
use think\Controller;
use think\Db;
use think\Model;
Class GoodsClass extends Controller{
    public function classlist(){
    $data=Db::name('goods_class')->select();
    $this->assign('data',$data);
    return $this->fetch();
    }


    public function classadd(){
        $res=Db::name('goods_class')->field("*,concat(path,',',pid) as paths")->order('paths')->select();
      //  var_dump($res);exit();
        foreach ($res as $k=>$v){
            $res[$k]['name']=str_repeat('|---',$v['level']).$v['name'];
        }

        var_dump($res);
        $this->assign('data',$res);
        return $this->fetch();
    }

    //添加分类到数据库
    public function add(){
       // print_r($_POST);
        $data['name']=$_POST['name'];
        $data['pid']=$_POST['pid'];


        if(!empty($data['name'])){
            if($data['pid']==0){
                $data['level']=1;
                $re= Db::name('goods_class')->insertGetId($data);
                $path['path']='0'.','.$re;
                Db::name('goods_class')->where('id',$re)->update($path);
                $this->success('顶级添加分类成功');
            }
        $res=Db::name('goods_class')->field('path')->find($data['pid']);
        $data['path']=$res['path'];
        $data['level']=substr_count($data['path'],',');
        $re= Db::name('goods_class')->insertGetId($data);
            $path['path']=$data['path'].','.$re;
            $path['level']=substr_count($path['path'],',');
            Db::name('goods_class')->where('id',$re)->update($path);
            $this->success('添加分类成功');

        }else{
            $this->error('分类名称为空');
        }
    }

    public function getGoodCateGory(){
        $category= Db::name('goods_class')->field('id,pid as pId,name')->select();
        if($category){
            foreach ($category as $k=>$v){
                $category[$k]['open']=true;
            }
            $this->success('获取商品分类成功','',$category);
        }else{
            $this->error('获取商品分类失败');
        }

    }

}

 

html代码

classlist.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

</head>
<link rel="stylesheet" href="/static/css/zTreeStyle/zTreeStyle.css" type="text/css">
<body>
<input type="hidden" name="cate" id="cate" value="">
<div class="zTreeDemoBackground left"  style="overflow-y:auto;">
    <ul id="goods_class" class="ztree"></ul>
</div>


</body>
<script src="/static/js/jquery-1.4.4.min.js" charset="utf-8"></script>
<script src="/static/js/common.js" charset="utf-8"></script>
<script src="/static/js/jquery.ztree.core.js" charset="utf-8"></script>
<script src="/static/js/jquery.ztree.excheck.js" charset="utf-8"></script>
<script>

    var setting = {
        check: {
            enable: true
        },
        data: {
            simpleData: {
                enable: true
            }
        },
        callback: {
            onCheck: zTreeOnCheck
        },
        view: {
            selectedMulti: false
        }
    };
    setting.check.chkboxType = { "Y" : "ps", "N" : "ps" };
    //Y 属性定义 checkbox 被勾选后的情况;
    //N 属性定义 checkbox 取消勾选后的情况;
    //"p" 表示操作会影响父级节点;
    //"s" 表示操作会影响子级节点。


    function zTreeOnCheck(event, treeId, treeNode) {
        //获取选中的节点id的数据
        var treeObj=$.fn.zTree.getZTreeObj("goods_class"),
            nodes=treeObj.getCheckedNodes(true),
            v=""
        for(var i=0;i<nodes.length;i++) {
            v += nodes[i].id+","+nodes[i].name+","+nodes[i].pId+"#";
        }
        $('#cate').val(v);
        refreshLayers();
        clearCheckedOldNodes();


    }
    //刷新图层的显示情况
    var layers;
    function refreshLayers() {
        var zTree = $.fn.zTree.getZTreeObj("goods_class");
        var changedNodes = zTree.getChangeCheckedNodes();
        for ( var i=0 ; i < changedNodes.length ; i++ ){
            var treeNode = changedNodes[i];
            layers = map.getLayersByName(treeNode.name);
            if(layers!=null && layers[0]!=null){
                layers[0].setVisibility(treeNode.checked);
            }
        }
    }
    //清理善后工作
    function clearCheckedOldNodes() {
        var zTree = $.fn.zTree.getZTreeObj("goods_class"),
            nodes = zTree.getChangeCheckedNodes();
        for (var i=0, l=nodes.length; i<l; i++) {
            nodes[i].checkedOld = nodes[i].checked;
        }


    }
    $(document).ready(function(){
        getGoodsCategory();
        function getGoodsCategory() {
           // alert('func');
            var arr;
            $.ajax({
                url: '/index/goodsclass/getGoodCateGory',
                dataType: 'json',
                success: function (result) {
                    if (result.code) {
                        $.fn.zTree.init($("#goods_class"), setting,result.data);
                    }else{
                        alert(result.msg);
                    }
                }
            });
        }
    });
</script>
</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芝麻开门2015

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值