thinkphp动态加载菜单的问题

lockmemory 2014-02-06 02:10:00
public function loadMenu(){
$menu=D('menu');
$lists=$menu->order('id Asc')->getField('id,menuid,menuname,parentid,URL');
foreach($lists as $key=>$value){
$lists[$key]['parentid']=$value['parentid'];
$lists[$key]['menuid']=$value['menuid'];
$lists[$key]['menuname']=$value['menuname'];

$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'];

}

dump($ids);
//获取回复
$childmenu=D('childmenu');
$map['menuid']=array('in',$ids);
//dump($ids);
$childmenus=$childmenu->where($map)->order('menuid asc')->select();
//dump($childmenus);
dump($lists);
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'])),
);
//print_r($lists[$value['menuid']]['newchildmenu'][$value['childmenuid']]);
$lists[$value['menuid']]['newchildmenu'][$value['childmenuid']]=$value;
print_r($lists[$value['menuid']]['newchildmenu'][$value['childmenuid']]);
}
}
dump($lists);
//$this->assign('list',$lists);
$this->list=$lists;
$this->display('Message/lyb_leftmenu');
}

dump($lists)结果如下
array(5) {
[1] => array(7) {
["id"] => string(1) "1"
["menuid"] => string(1) "1"
["menuname"] => string(12) "系统设置"
["parentid"] => string(1) "0"
["URL"] => string(31) "/app/index.php/System/setSystem"
["op"] => array(2) {
["delete"] => string(43) "/app/index.php/Message/delete/menuid/1.html"
["deletechildmenu"] => string(53) "/app/index.php/Message/deletechildmenu1/menuid/1.html"
}
["newchildmenu"] => array(1) {
[8] => array(5) {
["childmenuid"] => string(1) "8"
["menuid"] => string(1) "1"
["childmenuname"] => string(21) "管理员密码设置"
["childmenuURL"] => string(48) "/app/index.php/Message/update_adminpassword.html"
["op"] => array(1) {
["delete"] => string(57) "/app/index.php/Message/deletechildmenu/childmenuid/8.html"
}
}
}
}
[3] => array(6) {
["id"] => string(1) "3"
["menuid"] => string(2) "10"
["menuname"] => string(12) "留言查看"
["parentid"] => string(1) "0"
["URL"] => NULL
["op"] => array(2) {
["delete"] => string(44) "/app/index.php/Message/delete/menuid/10.html"
["deletechildmenu"] => string(54) "/app/index.php/Message/deletechildmenu1/menuid/10.html"
}
}
[6] => array(6) {
["id"] => string(1) "6"
["menuid"] => string(2) "15"
["menuname"] => string(12) "菜单设置"
["parentid"] => string(1) "0"
["URL"] => NULL
["op"] => array(2) {
["delete"] => string(44) "/app/index.php/Message/delete/menuid/15.html"
["deletechildmenu"] => string(54) "/app/index.php/Message/deletechildmenu1/menuid/15.html"
}
}
[10] => array(1) {
["newchildmenu"] => array(2) {
[9] => array(5) {
["childmenuid"] => string(1) "9"
["menuid"] => string(2) "10"
["childmenuname"] => string(18) "查看所有留言"
["childmenuURL"] => string(32) "/app/index.php/Message/leaveWord"
["op"] => array(1) {
["delete"] => string(57) "/app/index.php/Message/deletechildmenu/childmenuid/9.html"
}
}
[10] => array(5) {
["childmenuid"] => string(2) "10"
["menuid"] => string(2) "10"
["childmenuname"] => string(12) "审核留言"
["childmenuURL"] => string(37) "/app/index.php/Message/checkLeaveWord"
["op"] => array(1) {
["delete"] => string(58) "/app/index.php/Message/deletechildmenu/childmenuid/10.html"
}
}
}
}
[15] => array(1) {
["newchildmenu"] => array(1) {
[11] => array(5) {
["childmenuid"] => string(2) "11"
["menuid"] => string(2) "15"
["childmenuname"] => string(18) "查看所有菜单"
["childmenuURL"] => string(4) "NULL"
["op"] => array(1) {
["delete"] => string(58) "/app/index.php/Message/deletechildmenu/childmenuid/11.html"
}
}
}
}
}

我想把查看所有留言,审核留言放在留言查看下面,为什么就是不行了?
...全文
2934 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lockmemory 2014-02-07
  • 打赏
  • 举报
回复
有哪位高手能指点一下我的代码,顶起!
码无边 2014-02-06
  • 打赏
  • 举报
回复
需要对子菜单排序?
lockmemory 2014-02-06
  • 打赏
  • 举报
回复
你看下能不能改?
lockmemory 2014-02-06
  • 打赏
  • 举报
回复
html <ul id="menu"> <volist name="list" id="vo"> <if condition="$vo.parentid eq '0'"> <li class="item"><a href="{$vo.URL}" target="mainFrame" class="title" name="{$vo.id}">{$vo.menuname}</a></li> <else /> <volist name="vo.newchildmenu" id="rvo"> <ul id="opt_{$rvo.childmenuid}" class="optiton"> <li><a href="{$rvo.childmenuURL}" target="mainFrame">{$rvo.childmenuname}</a></li> </ul> </volist> </if> </volist> </ul> 你的代码我参考一下,我还是先用我的吧,php代码,数据表结构,html我都发了,看能不能改成我的菜单结构: 系统菜单 |--管理员密码修改 留言查看 |-查看所有留言 |-审核留言 菜单设置 |-查看所有菜单 |-添加菜单 |-删除菜单 |-编辑菜单 现在的问题是管理员密码修改菜单能放入$lists数组中,位置正确,查看所有留言和审核留言就在$lists中放错位置
码无边 2014-02-06
  • 打赏
  • 举报
回复
对于后台菜单,我是这么设计的,仅供参考

$m 		= M('menu');
$pagedata 	= $m->join('left join pagemenu on pagemenu.type = menu.id')->field('pagemenu.id,menu.menuname,pagemenu.pagename,pagemenu.type,pagemenu.pageurl')->select();
$res=array();
foreach($pagedata as $val){
	$res[$val['menuname']][]=$val;
}
$this->assign('res', $res);
$this->display('left');
tpl

<volist name="res" id="vo" key="k">
        <dl>
           	<dt>
                {$key}
			</dt>
          <dd>
              <ul>
              <volist name="vo" id="v">
                <li><a href="__APP__/{$v.pageurl}" target="mainFrame">{$v.pagename}</a>
                
                </li>
                </volist>
                
              </ul>
           </dd>
           
        </dl>
        </volist>
码无边 2014-02-06
  • 打赏
  • 举报
回复
你参考下
$list = array (
  array ('id' => '1','menuname' => '系统设置','parentid' => '0','sort' => '0',),
 array ('id' => '2','menuname' => '用户管理','parentid' => '0','sort' => '1',),
 array ('id' => '3','menuname' => '文章管理','parentid' => '0','sort' => '2',),
  array ('id' => '4','menuname' => '评论管理','parentid' => '0','sort' => '3',),
  array ('id' => '5','menuname' => '类别管理','parentid' => '0','sort' => '4',),
  array ('id' => '6','menuname' => '用户列表','parentid' => '1','sort' => '0',),
  array ('id' => '7','menuname' => '用户审核','parentid' => '2','sort' => '2',),
  array ('id' => '8','menuname' => '文章新增','parentid' => '3','sort' => '3',),
  array ('id' => '9','menuname' => '文章审核','parentid' => '3','sort' => '4',),
);
function tree(&$list,$parent_id,$deep){
		static $tree = array();
		foreach($list as $v){
			if($v['parentid'] == $parent_id){
				$v['sort'] = $deep;
				$tree[] = $v;
				tree($list,$v['id'],$deep+1);
			}
		}
		return $tree;
	}
	
	
	$result = tree($list,0,0); // 无限极分类
	echo '<pre>';print_r($result);
	echo '<pre>';
	foreach($result as $v){
		echo '|' . str_repeat('----',$v['sort']);
		echo $v['menuname'];
		echo '<br />';
	}
lockmemory 2014-02-06
  • 打赏
  • 举报
回复
这个不一定,关键是构造出来的菜单结构要符合要求,也就是对$lists有要求

21,887

社区成员

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

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