次のようなメインメニューがあります。
$main= array(
array('label'=>'Main Menu'),
array('label'=>'Posts', 'icon'=>'list', 'url'=>array('post/index') ),
'--',
array('label'=>'Comments', 'icon'=>'comment', 'url'=>array('comment/index')),
);
Posts controller では、投稿内にサブメニューを作成します。
$submenu= array(
array('label'=>'All Posts', 'icon'=>'list-alt', 'url'=>array("post/index")),
array('label'=>'Create Post', 'icon'=>'plus', 'url'=>array("post/create")),
);
に基づいて両方をマージする機能があります
$main 配列からの URL'url'=>array('post/index')
例えば
list($controller,$action)=explode('/',current($link['url']));
if($controller==$this->owner->getId()){
$append_to=$menu_id;
break;
}
出力:
$main= array(
array('label'=>'Main Menu'),
array('label'=>'Posts', 'icon'=>'list', 'url'=>array('post/index'),
'items'=>array(
array('label'=>'All Posts', 'icon'=>'list-alt', 'url'=>array("post/index")),
array('label'=>'Create Post', 'icon'=>'plus', 'url'=>array("post/create")),
);
),
'--',
array('label'=>'Comments', 'icon'=>'comment', 'url'=>array('comment/index')),
);
したがって、実行時にメインメニュー項目のほかにサブメニューを挿入するという考え方です。$menu はグローバルですが、$submenu はコントローラーで定義されています。
これが最善の方法かどうかはわかりません。
より良い方法はありますか、または Yii は条件付きで配列をマージするような組み込みクラスを提供していますか?
CMap クラスを確認しましたが、そのような機能は提供していません。
このコードを改善するために何を提案しますか?
よろしく