如何动态更改CakePHP中的菜单链接

时间:2014-04-07 07:36:00

标签: cakephp menubar

在我的一个项目中,我必须根据menu links更改content page。如果我的“内容页面”为page 1,那么我的菜单链接将为Menu 1, Menu 2, Menu 3,...,如果我的内容页面为page 2,则我的菜单链接将为Menu A, Menu B, Menu C,...

实施例: 在我的标题中,menu bar是:

<ul>
   <li><?php echo $this->Html->link("Menu 1",array('controller'=>'controllers','action'=>'menu1','full_base'=>true));?></li>
   <li><?php echo $this->Html->link("Menu 2",array('controller'=>'controllers','action'=>'menu2','full_base'=>true));?></li>
</ul>

我想要的是,当我在页面“any_page.ctp”时(意思是,当我在一个函数“anyPage”中)时,菜单栏将自动更改为:

<ul>
   <li><?php echo $this->Html->link("Menu A",array('controller'=>'controllers','action'=>'menuA','full_base'=>true));?></li>
   <li><?php echo $this->Html->link("Menu B",array('controller'=>'controllers','action'=>'menuB','full_base'=>true));?></li>
</ul>

我想根据我的网页更改Menu(s)。有没有办法在CakePHP

中执行此操作

如果需要更多解释,请告诉我。

2 个答案:

答案 0 :(得分:0)

省略您可能想要使用的所有<li>和CSS样式,您可以在导航栏中尝试这样的内容。

if ($this->params['action'] == 'page1') {
    echo "menu item 1";
    echo "menu item 1";
    echo "menu item 1";
} elseif ($this->params['action'] == 'page2') {
    echo "menu item A";
    echo "menu item B";
    echo "menu item C";
} else {
    echo "something else A";
    echo "something else B";
    echo "something else C";
}

基本上,如果您想在视图中访问当前操作,可以通过$this->params['action']获取。要查看其他可用变量,请尝试使用debug($this->params)

答案 1 :(得分:0)

您可以为菜单创建元素。 例如,您要为第1页创建菜单。

<ul>
      <li><?php echo $this->Html->link("Menu",array('controller'=>'controllers','action'=>'menu1','full_base'=>true));?></li>
      <li><?php echo $this->Html->link("Menu 2",array('controller'=>'controllers','action'=>'menu2','full_base'=>true));?></li>   
</ul>

将其保存到路径中的文件中 - &gt; app / View / Elements / page1_menu.ctp(文件名只是一个例子)

然后在视图中显示菜单。 (例如,您的网址是/ users / page1)

if($this->params["controller"]=="users" && $this->params["action"]=="page1" ){
  echo $this->element('page1_menu');
}