【问题标题】:how to export jstree desired json formatted from etrepat/baum laravel package如何从 etrepat/baum laravel 包中导出 jstree 所需的 json
【发布时间】:2016-07-22 05:49:10
【问题描述】:

我正在使用jstree jQuery plugin 将类别显示为树视图。

在后端,我使用etrepat/baum laravel 包来创建类别嵌套集。

etrepat/baum 包有一个名为toHierarchy() 的方法,它返回一个表示查询树的嵌套集合。

返回的格式如下:

    {  
   "7":{  
      "org_level_id":7,
      "parent_id":5,
      "lft":7,
      "rgt":12,
      "depth":0,
      "name":"Computer",
      "created_at":"2015-11-02 00:45:01",
      "updated_at":"2015-11-02 00:45:01",
      "children":[  
         {  
            "org_level_id":14,
            "parent_id":7,
            "lft":8,
            "rgt":9,
            "depth":1,
            "name":"hard",
            "created_at":"2015-11-02 00:45:01",
            "updated_at":"2015-11-02 00:45:01",
            "children":[  

            ]
         },
         {  
            "org_level_id":13,
            "parent_id":7,
            "lft":10,
            "rgt":11,
            "depth":1,
            "name":" RAM",
            "created_at":"2015-11-02 00:45:01",
            "updated_at":"2015-11-02 00:45:01",
            "children":[  

            ]
         }
      ]
   },
   "9":{  
      "org_level_id":9,
      "parent_id":2,
      "lft":20,
      "rgt":23,
      "depth":0,
      "name":"search engines",
      "created_at":"2015-11-02 00:45:01",
      "updated_at":"2015-11-02 00:45:01",
      "children":[  
         {  
            "org_level_id":18,
            "parent_id":9,
            "lft":21,
            "rgt":22,
            "depth":1,
            "name":"Google",
            "created_at":"2015-11-02 00:45:01",
            "updated_at":"2015-11-02 00:45:01",
            "children":[  

            ]
         }
      ]
   },
   "17":{  
      "org_level_id":17,
      "parent_id":10,
      "lft":25,
      "rgt":26,
      "depth":0,
      "name":"Download",
      "created_at":"2015-11-02 00:45:01",
      "updated_at":"2015-11-02 00:45:01",
      "children":[  

      ]
   }
}

而另一方面,JStree 插件 需要一种 json 格式,例如从中创建树视图:

[
   'Simple root node',
   {
     'text' : 'Root node 2',
     'state' : {
       'opened' : true,
       'selected' : true
     },
     'children' : [
       { 'text' : 'Child 1' },
       'Child 2'
     ]
  }
]

如何将 etrepat/baum 的返回格式转换为 jstree 所需的适当格式?

【问题讨论】:

    标签: php jquery json laravel jstree


    【解决方案1】:

    您可以在客户端或服务器端执行此操作。这是一个在服务器端执行的简单函数:

    // $tree is the result of the toHierarchy assuming it is a JSON string
    // if it is not - skip this json_decode step
    $tree = json_decode($tree, true);
    
    function parse($data) {
      $temp = [];
      foreach ($data as $id => $v) {
        unset($v['parent_id']);
        $v['id'] = $id;
        $v['text'] = $v['name'];
        if (count($v['children'])) {
          $v['children'] = parse($v['children']);
        }
        $temp[] = $v;
      }
      return $temp;
    }
    
    $tree = json_encode(parse($tree));
    // now tree contains data that jstree will happily work with
    

    生成的 JSON 对象将与 jstree 完美配合。您当然可以使用unset 去除不需要的属性,以尽量减少数据量。

    最好的问候,
    伊万

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-24
      • 1970-01-01
      • 2012-05-05
      • 2012-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多