2011-03-31 22 views
2

我建立使用CakePHP的投资组合网站,有一个导航像这样:导航CakePHP的选择状态的链接

<nav id="nav"> 
     <ul> 
      <li><?php echo $html->link('Home', '/', array('title' => 'Home')); ?></li> 
      <li><?php echo $html->link('Portfolio', '/portfolio', array('title' => 'Portfolio')); ?> 
       <ul> 
        <li><?php echo $html->link('Lorem ipsum dolor sit amet, consectetur adipisicing elit', '/portfolio', array('title' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit')); ?></li> 
        <li><?php echo $html->link('Lorem ipsum dolor sit amet, consectetur adipisicing elit', '/portfolio', array('title' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit')); ?></li> 
        <li><?php echo $html->link('Lorem ipsum dolor sit amet, consectetur adipisicing elit', '/portfolio', array('title' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit')); ?></li> 
        <li><?php echo $html->link('Lorem ipsum dolor sit amet, consectetur adipisicing elit', '/portfolio', array('title' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit')); ?></li> 
        <li><?php echo $html->link('Lorem ipsum dolor sit amet, consectetur adipisicing elit', '/portfolio', array('title' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit')); ?></li> 
        <li><?php echo $html->link('Lorem ipsum dolor sit amet, consectetur adipisicing elit', '/portfolio', array('title' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit')); ?></li> 
        <li><?php echo $html->link('Lorem ipsum dolor sit amet, consectetur adipisicing elit', '/portfolio', array('title' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit')); ?></li> 
        <li><?php echo $html->link('Lorem ipsum dolor sit amet, consectetur adipisicing elit', '/portfolio', array('title' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit')); ?></li> 
       </ul> 
      </li> 
      <li><?php echo $html->link('About me', '/about', array('title' => 'About me')); ?></li> 
     </ul> 
    </nav> 

不过,我想,当用户在添加类的选择链接该页面或其嵌套页面内的页面。因此,例如,如果他们在投资组合项目上,那么两者都是项目链接,并且投资组合将在<li>上具有class="selected"

有人用CakePHP做过这样的事情吗?谢谢

回答

1

而不是将“选定”类添加到<li>,而是您可能需要在<body>标记上添加id属性。此解决方案可能更容易在特定部分中的页面级联,而这些页面可能不符合严格的,可预测的URL模式。你可以为每个控制器默认等

这样的回答解释了如何轻松地在CakePHP中添加id属性为<body>标签:Add to <body> tag of a cakePHP app

否则,有几个菜单和导航视图助手左右浮动。我在这里发现了这一个:http://www.solitechgmbh.com/2008/06/06/menu-highlighting-with-cakephp-12/

1

这是CakePHP和“普通”html/php的组合,但它适用于我的CakePHP站点。

<a href="/portfolio" <? if($this->params['controller'] == "portfolio") 
    echo 'class="selected"'; ?>>PORTFOLIO</a> 

或者,如果您需要检查的不仅仅是控制器,还可以检查操作。

<a href="/pages/about" <? if($this->params['controller'] == "pages" 
    && $this->params['action'] == "about") 
    echo 'class="selected"'; ?>>ABOUT</a> 
+0

页面怎么样?例如'/ pages/about' – Cameron 2011-04-01 14:49:34

+0

然后你检查'$ this-> patams ['controller']'和'$ this-> params ['action']' – Dunhamzzz 2011-04-01 14:59:11