ホームページ > バックエンド開発 > PHPチュートリアル > Thinkphp の動的読み込みメニューの問題

Thinkphp の動的読み込みメニューの問題

WBOY
リリース: 2016-06-23 14:28:36
オリジナル
1131 人が閲覧しました

thinkphp

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);
//ダンプ($ids);
$childmenus=$childmenu->where($map)->order('menuid asc')->select();
//ダンプ($childmenus);
ダンプ($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"
["メニュー名"] => string(12) "系统设置"
["parentid"] => 文字列(1) "0"
["URL"] => string(31) "/app/index.php/System/setSystem"
["op"] => array(2) {
["削除"] => 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) {
["削除"] => string(57) "/app/index.php/Message/deletechildmenu/childmenuid/8.html"
}
}
}
}
[3] => array(6) {
["id"] => string(1) "3"
["menuid"] => string(2) "10"
["メニュー名"] => string(12) "留言查看"
["parentid"] => 文字列(1) "0"
["URL"] => NULL
["op"] => array(2) {
["削除"] => 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"
["メニュー名"] => string(12) "菜单设置"
["parentid"] => string(1) "0"
["URL"] => NULL
["op"] => array(2) {
["削除"] => 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) {
["削除"] => 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) {
["削除"] => 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) {
["削除"] => string(58) "/app/index.php/Message/deletechildmenu/childmenuid/11.html"

}
}
}
}

すべてのコメントを表示し、メッセージ ビューでコメントを確認したいのですが、なぜ機能しないのですか?

ディスカッションに返信 (解決策)

サブメニューを並べ替える必要がありますか?

これは必ずしも当てはまるわけではありません。重要なのは、構築されたメニュー構造が要件を満たさなければならないということです。つまり、$lists の要件があります

参照してください

$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 class="brush:php;toolbar:false">';print_r($result);	echo '<pre class="brush:php;toolbar:false">';	foreach($result as $v){		echo '|' . str_repeat('----',$v['sort']);		echo $v['menuname'];		echo '<br />';	}
ログイン後にコピー

背景メニューについては、次のようになります参考のためにデザインしました

$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>
ログイン後にコピー

html

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート