我正在尝试从jstree生成的数据构建动态菜单。
Jstree值将存储在数据库中,如下所示:
ID |姓名|上级图标|链接
因此,我已经制定了一种从数据库(行)读取每一行并将其存储在数组中的方法,以便Smarty可以动态构建菜单。
那是我的功能:
$menu_content = array();
foreach($result as $key => $r) {
if($r['Id'] != 1) {
$Id = $r['Id'];
$menu_content[$r['Id']] = array(
"name" => $r['Name'],
"link" => $r['Link'],
"icon" => $r['Icon']
);
unset($result[$key]);
foreach($result as $key_children => $c) {
if($c['Parent'] == $r['Id']) {
$menu_content[$r['Id']]['children'][] = array(
"name" => $c['Name'],
"link" => $c['Link'],
"icon" => $c['Icon']
);
unset($result[$key_children]);
$Idc = $c['Id'];
foreach($result as $key_grandchild => $cc) {
if($cc['Parent'] == $c['Id']) {
$menu_content[$r['Id']]['children']['grandchild'][] = array(
"name" => $cc['Name'],
"link" => $cc['Link'],
"icon" => $cc['Icon']
);
unset($result[$key_grandchild]);
}
}
}
}
}
因此它应该存储如下值: $ menu_content [parent] [children] [grandchildren]。 这部分代码可以正常工作,但并没有取消子级和子级值的设置,因此我将其改编。第一次以正确的顺序,然后以亲子身份。
谢谢。