我希望能够通过使用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