0

次のようなメインメニューがあります。

$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 クラスを確認しましたが、そのような機能は提供していません。

このコードを改善するために何を提案しますか?

よろしく

4

1 に答える 1

0

名前付きキーがなく、連想配列ではなく通常の配列であるため、私はそれを残します。したがって配列をマージすると、新しい項目が追加されるだけです。

于 2012-10-21T14:39:10.140 に答える