【问题标题】:CakePHP selected state for navigation links导航链接的 CakePHP 选择状态
【发布时间】:2011-03-31 19:23:48
【问题描述】:

我正在使用具有如下导航的 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>

但是,当用户在该页面上或在其嵌套页面内时,我想向链接添加一个 selected 类。因此,例如,如果他们在投资组合项目上,那么项目链接和投资组合都会在 &lt;li&gt; 上具有 class="selected"

有人用 CakePHP 做过类似的事情吗?谢谢

【问题讨论】:

    标签: php cakephp


    【解决方案1】:

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

    这个答案解释了如何在 CakePHP 中轻松地将 id 属性添加到 &lt;body&gt; 标记:Add to <body> tag of a cakePHP app

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

    【讨论】:

      【解决方案2】:

      这有点像 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>
      

      【讨论】:

      • 页面呢?比如/pages/about
      • 然后你检查$this-&gt;patams['controller']$this-&gt;params['action']
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-12
      • 2016-01-09
      • 2010-10-08
      相关资源
      最近更新 更多