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

时间:2013-11-21 14:56:48

标签: cakephp navigation params

我希望能够使用cakePHP参数将导航列表项设置为活动状态。这将在视觉上告诉访问者他们当前在哪个页面。我已经想出了如何为当前的控制器做这个,但是,我在post控制器中为特定的行路由了诸如“关于我们”这样的页面,即使我正在尝试检查'pass',它也无法正常工作PARAM。这是代码:

在名为“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));  

因为帖子控制器还有其他行/列表项,我也想在左侧导航栏中设置为活动状态,我想弄清楚的是如何做到这一点?

感谢

2 个答案:

答案 0 :(得分:0)

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>

答案 1 :(得分:0)

我最后做的运气如下:

<?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>

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

希望这有助于其他人。