在使用 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;
}
3.原理只是修改了判断代码,使用strpos来判断路由中,是否存在当前请求的模块或控制器的路径,从而达到获取激活菜单项的目的。
================================================================
Yii 的Breadcrumbs,是Yii的路径插件,使用方法 :
<?php $this->widget('zii.widgets.CBreadcrumbs', array('links'=>$this->breadcrumbs,)); ?>
在视图里设置路径信息(在生成Yii程序里,都会自动产生这些代码,注册掉的部分是自动生成的):
<?php
$this->breadcrumbs=array(
//$this->module->id,
'系统设置'
);
?>
但是因为这个东东是老外写的,所以路径的开头总是以 Home 开头,就像这样
Home » 系统设置
通过为CBreadcrumbs添加一个属性,可以很简单的解决这个问题
1. 打开代码文件 : yiiframework/zii/widgets/CBreadcrumbs.php
2.在打开文件 的第48行下方添加代码: public $rootName = 'Home';
3.修改第104行代码
$links[]=CHtml::link(Yii::t('zii','Home'),Yii::app()->homeUrl);
为: $links[]=CHtml::link(Yii::t('zii',$this->rootName),Yii::app()->homeUrl);
4.调用方法 :<?php $this->widget('zii.widgets.CBreadcrumbs', array('rootName'=>'管理系统','links'=>$this->breadcrumbs,)); ?>
原理:其实就是为插件添加了一件属性,来代替之前固化的开始处字符。
相关推荐
用于yii的bootstrap插件,能够轻松创建小部件自带Css样式
yii2-plugins-system, 带有事件管理器和https的Yii2插件系统模块 Yii2-plugins-system入门 Yii2-plugins-system是设计用来工作的。 这意味着安装需要最少的步骤。 你应该只需要一个配置步骤,你就可以在Yii2网站上...
yii2 图片上传扩展插件
Yii summernote富文本插件 1、修改summernote图片上传设置附件上传地址 2、编辑代码 高亮显示 可选项 3、使用方便,直接作为Inputwedit形式使用 4、作为yii扩展引用 5、yii1.x版本支持
yii2 支付宝扩展插件
yii2图片裁剪插件
无需编辑任何文件即可配置插件,它可以在管理控制面板上安装,卸载,启用和禁用。 插件不会修改项目文件,可以安全地将其卸载。 可扩展。 可以将钩子添加到任何视图。 封装Yii函数,便于非Yii开发人员创建插件 ...
去返网分享yii权限管理,yii权限,以及函数的讲解分析
Yii2 博客插件yii2 + yii-admin + yii-adminlteCRM Composer Registry Manager列出当前可用的所有镜像
很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架
yii的小部件使用的总结,快速生成增删改查,感觉不同的需求进行逻辑修改!
采用的方式是分析框架的源代码,尝试从根上进行理解和阐述,并融入个人使用Yii开发的一些经验和教训。 通过本书,你将不仅仅了解到Yii怎么使用的实操技巧,还将掌握其实现的技术原理和内幕。 更为重要的是,接触...
yii rbac 插件模块,进行权限控制,非常方便
Yii中使用PHPExcel,相信你看完本文档之后,疑点瞬即消失
yii框架中文手册教程和YII模板 我很辛苦才找到的
一个Yii2插件,用于使用yii\widgets\ActiveForm和\yii\db\ActiveRecord创建步进式表单或表单向导,它使用来创建使用3个内置和3个其他主题的表单界面,此外,您还可以创建自己的表单也有自己的定制主题。 注意:它...
教程名称:Yii2.0 打造京东商城平台 PHP电商实战 Yii2.0视频教程 教程内容: 包含了电商的所有功能模块:商品展示、购物车功能、下单支付、发货、确认收获、商品管理、订单管理。电商API接口开发。Yii2.0级基于Yii...
学习如何编写Yii2扩展,以扩展形式编写资源包,实现在不同应用和项目之间重用资源包,且降低维护成本。
yii2-social, 用于嵌入社会插件和小部件的Yii2模块 yii2-social 支持访问Yii框架 2.0的社交插件的模块。 它包括支持将插件从以下网络嵌入你的网站:DisqusFacebook像按钮共享按钮发送按钮保存按钮嵌入式日志嵌入式...