PHP配列からメニューを生成しています
$MENU["HOME"] = array( 'enabled'=>true, 'text'=>'Home' ,'link'=> 'public/home' );
$MENU["SHOP"] = array( 'enabled'=>true, 'text'=>'Shop' ,'link'=> 'public/shop' );
メニューを生成するコードは
function show_menu(){
$menu_string = '<ul>';
foreach( $MENU as $item )
{
if( $item['enabled'] )
{
$menu_string .= '<li>'.$item['text'].'</li>';
}
}
echo $menu_string.'</ul>';
}
しかし、今では次のように多くのレベルのメニューがあるため、構成を次のように変更しました
$MENU["HOME"] = array
(
'parent'=>true, // parent == true ? show in top level menu : do not show in top level
'enabled'=>true,
'text'=>'Home',
'link'=> 'public/home',
'sub_modules' => array() // empty sub modules means no sub menus need to display
);
$MENU["SHOP"] = array
(
'parent'=>true,
'enabled'=>true,
'text'=>'Shop',
'link'=> 'public/shop',
'sub_modules' => array('SALES') // SALES is a sub menu of SHOP,which is also configured as another module
);
$MENU["SALES"] = array
(
'parent'=>FALSE, // PARENT = FALSE (this is a sub menu of SHOP)
'enabled'=>true,
'text'=>'Sales',
'link'=> 'public/shop/sales',
'sub_modules' => array('SALES_RETURN','SALES_REPORT') //have 2 sub menu's
);
$MENU["SALES_RETURN"] = array
(
'parent'=>FALSE,
'enabled'=>true,
'text'=>'Sales Return',
'link'=> 'public/shop/sales/return',
'sub_modules' => array()
);
$MENU["SALES_REPORT] = array
(
'parent'=>FALSE,
'enabled'=>true,
'text'=>'Sales Report',
'link'=> 'public/shop/sales/report',
'sub_modules' => array()
);
メニューが深くなって同じ機能が使えなくなってしまいましたが、
parent
である場合true
、その特定のモジュール/メニューが有効になっていることを意味します。
どうすればこれを達成できますか? (メニューにはサブモジュールがあるかもしれませんが、サブモジュールには他のメニューもあるかもしれません、それが問題です)
期待される結果は
<UL>
<li>Home</li>
<li>
Shop
<UL>
<LI>
SALES
<UL>
<LI>Sales Return</LI>
<LI>Sales Report</LI>
</UL>
</LI>
</UL>
</li>
</UL>