2011-03-31 96 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