CakePHP选择了导航链接的状态

时间:2011-03-31 19:23:48

标签: php 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>

但是,当用户在该页面上或在其嵌套页面内时,我想向链接添加一个选定的类。因此,例如,如果他们在投资组合项目上,那么项目链接和投资组合将在class="selected"上有<li>

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

2 个答案:

答案 0 :(得分:1)

您可能希望在<li>标记上添加id属性,而不是向<body>添加“已选定”类。对于可能不遵守严格,可预测的URL模式的特定部分中的页面,此解决方案将更容易级联。您可以为每个控制器设置默认值等。

此答案解释了如何轻松地将id属性添加到CakePHP中的<body>标记:Add to <body> tag of a cakePHP app

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

答案 1 :(得分: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>