如何使用cakeHP参数将无序列表项设置为活动



我希望能够通过使用cakeHP参数将导航列表项设置为活动。这将直观地告诉访问者他们当前在哪个页面上。我已经想好了如何为当前控制器执行此操作,但我正在为"about us"等页面在后控制器中路由特定行,即使我正在尝试检查"pass"参数,它也不起作用。这是代码:

在一个名为"leftNavBar.ctp"的元素中,我得到了以下内容:

<?php
  $current_pass = $this->params['pass'];
  $current_controller = $this->params['controller'];
?>
  <ul class="nav">
   <li class="<?php if(in_array($current_pass, array(2))){echo 'active';} ?>">
   <?php echo $this->Html->link(__("About Us",true),"/about-us") ?>
   </li>
    <li class="<?php if(in_array($current_controller, array('galleries'))){echo 'active';} ?>">
     <?php echo $this->Html->link(__("Galleries",true),"/galleries") ?>
    </li> 
  </ul>

这是"关于我们"页面的路由器说明:

    Router::connect('/about-us',array
    ('controller' => 'posts', 'action' => 'view', 2));  

因为Posts控制器还有其他行/列表项,我也想在左侧导航栏中设置为活动,所以我想知道如何做到这一点?

感谢

You can try setting variable inside the controller and access in view like 
In Controller
function view($id) {
  ..........
  ..........
  $this->set('current_pass',$id);
}
In View 
<?php
  $current_controller = $this->params['controller'];
?>
  <ul class="nav">
   <li class="<?php if(in_array($current_pass, array(2))){echo 'active';} ?>">
   <?php echo $this->Html->link(__("About Us",true),"/about-us") ?>
   </li>
    <li class="<?php if(in_array($current_controller, array('galleries'))){echo 'active';} ?>">
     <?php echo $this->Html->link(__("Galleries",true),"/galleries") ?>
    </li> 
  </ul>

我最终幸运地做了以下事情:

<?php
$url = $this->Html->url() ;
$current_controller = $this->params['controller'];
?>
<ul class="nav">
 <li <?php if($url == '/NAME-OF-URL-HERE/about-us') echo 'class="active"';?>>
 <?php echo $this->Html->link(__("About Us",true),"/about-us") ?>
 </li>
  <li class="<?php if(in_array($current_controller, array('galleries'))){echo 'active';} ?>">
   <?php echo $this->Html->link(__("Galleries",true),"/galleries") ?>
  </li> 
</ul>

这很有效,因为并非所有URLS都以相同的方式处理。一些URL是控制器,另一些是控制器中的特定ID。

希望这能帮助其他人。

Paul

相关内容

  • 没有找到相关文章

最新更新