YII Cmenu 活动菜单激活问题

YII cooljun 324℃ 0评论

在使用 YIi的路径管理工具时,发现了一个问题。

                    <?php
                   
$this->widget(‘zii.widgets.CMenu’,array(
                       
‘items’=>array(
                            array(‘label’=>’首页’,
‘url’=>array(‘/site/index’)),
                            
array(‘label’=>’Products’, ‘url’=>array(‘product/index’),
‘items’=>array(
                                array(‘label’=>’New
Arrivals’, ‘url’=>array(‘product/new’,
‘tag’=>’new’)),
                               array(‘label’=>’Most
Popular’, ‘url’=>array(‘product/index’,
‘tag’=>’popular’)),
                            
)),
                            array(‘label’=>’系统设置’,
‘url’=>array(‘/setting),”),
                       
),
                    ));
                    ?>

如上所示的菜单,因为 CMENU
链接是模块(modules)路径的话,显示出来的菜单就捕获不到那个菜单当前是被激活的。可以通过简单的修改插件代码来解决这一问题:

1.打开代码文件 : yiiframework/zii/widgets/CMenu.php

2.找到代码第 226行,把isItemActive函数,替换为以下代码:

protected function isItemActive($item,$route)
{
   //原版
       
//if(isset($item[‘url’]) && is_array($item[‘url’]) &&
!strcasecmp(trim($item[‘url’][0],’/’),$route))
        //修改版
       
if(isset($item[‘url’]) && is_array($item[‘url’]) &&
strpos(‘/’.$route,trim($item[‘url’][0],’/’))>0)
   {
   
if(count($item[‘url’])>=1)
    {
    
foreach(array_splice($item[‘url’],1) as $name=>$value)
     {
     
if(!isset($_GET[$name]) || $_GET[$name]!=$value)
       return false;
    
}
    }
    return true;
   }elseif(isset($item[‘url’]) &&
strlen(strstr($item[‘url’],$route))>0){
            return true;
        }
   return false;
}

注:具体位置可能错误,找到文件后,可以通过搜索定位到该行

转载请注明:cooljun小站 » YII Cmenu 活动菜单激活问题

如果你觉得这篇文章对你有帮助,请支持我继续更新网站 !捐赠本站
喜欢 (0)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址