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')),
  );

在帖子控制器中,我在帖子中构建一个子菜单,例如

 $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 回答