我希望能够使用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));
因为帖子控制器还有其他行/列表项,我也想在左侧导航栏中设置为活动状态,我想弄清楚的是如何做到这一点?
感谢
答案 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。
希望这有助于其他人。
保