我正在构建一个图库应用程序,我需要它采用树格式,我使用 jstree 扩展来构建它,并且我需要 json 采用这种格式:
$(function () {
$("#demo1").jstree({
"json_data" : {
"data" : [
{
"data" : "A node",
"metadata" : { id : 23 },
"children" : [ "Child 1", "A Child 2" ]
},
{
"attr" : { "id" : "li.node.id1" },
"data" : {
"title" : "Long format demo",
"attr" : { "href" : "#" }
}
}
]
},
"plugins" : [ "themes", "json_data", "ui" ]
}).bind("select_node.jstree", function (e, data) { alert(data.rslt.obj.data("id")); });
});
我正在使用这个数据库:
类别: ID 姓名 id_父亲
产品: ID 姓名 价格 类别_id
请帮助我,>_<,我在我的项目中使用 MVC 结构,并且可以执行 foreach(modelinstance as model) 等操作...
帮助我真的需要它,但我不知道如何构建它
最佳答案
这是我使用的功能,你需要CNestedSetBehavior不过,在您的模型中,我建议采用这种设置分层数据的方式,因为检索速度要快得多:
protected function formatJstree(){
$categories = $this->descendants()->findAll();
$level=0;
$parent = 0;
$data = array();
foreach( $categories as $n => $category )
{
$node = array(
'data'=> "{$category->title}",
'attr'=>array('id'=>"category_id_{$category->category_id}")
);
if($category->level == $level){
$data[$parent]["children"][] = $node;
}
else if($level != 0 && $category->level > $level){
if(!isset($data[$n]["children"])){
$data[$n]["children"] = array();
}
$data[$parent]["children"][] = $node;
}
else
{
$data[] = $node;
$parent = $n;
}
$level=$category->level;
}
return $data;
}
关于javascript - 从树形结构数据库生成 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12768210/