thinkphp动态加载菜单的问题

lockmemory 2014-02-04 10:28:26
//用两个集合实现父子菜单的加载

foreach($vo as $key=>$value){
$vo[$key]['id']=$value['id'];
$vo[$key]['menuid']=$value['menuid'];
$vo[$key]['menuname']=$value['menuname'];
$vo[$key]['parentid']=$value['parentid'];
$vo[$key]['childid']=$value['childid'];
$vo[$key]['URL']=$value['URL'];
}
}


foreach($v1 as $key1=>$value1){
foreach($v2 as $key=>$value2){

if($key1+1>=count($vo)){
echo '1';
break;
}
if($v2[$key1+1]['parentid']==$vo[$key]['menuid']){
$vo[$key1+1]['parentid']=$value2['menuid'];
print_r($vo[$key+1]['parentid']);

}
}
}
dump($vo)

为什么得出的$vo和我想的菜单目录结构不一样啊?
...全文
2582 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lockmemory 2014-02-05
  • 打赏
  • 举报
回复
1 是将我上面的表menu拆分成两个表进行关联查询吗? select menuid from think_menu where menuid in (select parentid from think_menu)? 还是建两个表think_menu,think_childmenu 代码如下 public function loadMenu(){ $menu=D('menu'); $lists=$menu->order('id Asc')->getField('id,menuid,menuname,parentid,URL'); foreach($lists as $key=>$value){ $lists[$key]['menuid']=$value['menuid']; $lists[$key]['menuname']=$value['menuname']; $lists[$key]['parentid']=$value['parentid']; $lists[$key]['op']=array( 'delete'=>U('delete',array('menuid'=>$value['menuid'])), 'deletechildmenu'=>U('deletechildmenu1',array('menuid'=>$value['menuid'])), ); $lists[$key]['URL']=$value['URL']; $ids[]=$value['menuid']; } $childmenu=D('childmenu'); $map['menuid']=array('in',$ids); $childmenus=$childmenu->where($map)->order('menuid asc')->select(); dump($childmenus); if(is_array($childmenus)){ foreach($childmenus as $key=>$value){ $value['childmenuname']=$value['childmenuname']; $value['childmenuURL']=$value['childmenuURL']; $value['op']=array( 'delete'=>U('deletechildmenu',array('childmenuid'=>$value['childmenuid'])), ); $lists[$value['menuid']]['newchildmenu'][$value['childmenuid']]=$value; //print_r($lists[$value['menuid']]['newchildmenu'][$value['childmenuid']]); } } dump($lists); $this->assign('list',$lists); $this->display('Message/lyb_leftmenu'); } $lists数据不对啊
码无边 2014-02-04
  • 打赏
  • 举报
回复
推荐版主的帖子:http://bbs.csdn.net/topics/390524563
lockmemory 2014-02-04
  • 打赏
  • 举报
回复
CREATE TABLE IF NOT EXISTS `think_menu` ( `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, `menuid` varchar(5) NOT NULL, `menuname` varchar(255) NOT NULL, `parentid` smallint(5) DEFAULT NULL, `childid` smallint(255) DEFAULT NULL, `URL` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ;
码无边 2014-02-04
  • 打赏
  • 举报
回复
贴出表结构……
xuzuning 2014-02-04
  • 打赏
  • 举报
回复
1、从你的代码中看不出你打算做什么 2、如果外层循环是父菜单,那么内层循环就是为了组装父菜单项的子菜单数据 如果是这样,那么你的代码效率太低了 tp 提供了关联查询,并返回巢状数组的功能,并不需要你太费脑筋 3、传递的参数很自然的是父节点的id,这样就可以顺利的获取该id下的一级子节点的数据了
lockmemory 2014-02-04
  • 打赏
  • 举报
回复
在thinkphp中不好调用吧,如果是pathinfo模式,该怎么调用了?如果是 Tree($praentid,$childid,$deep) http://localhost/app/index.php/Message/Tree后面应该怎么写呢?

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧