关于Yii的菜单插件CMenu和面包屑breadcrumbs路径管理插件的一些使用问题
来源:互联网 发布:linux bash 逻辑表达式 编辑:程序博客网 时间:2024/05/29 21:17
一、在使用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 链接是模块路径,显示出来的菜单就捕获不到那个菜单当前是被激活的。可以通过简单的修改插件代码来解决这一问题。1、打开代码文件: yiiframework/zii/widgets/CMenu.php2、找到代码第 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.php2、在打开文件的第 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,)); ?>原理:其实就是为插件添加了一件属性,来代替之前固化的开始处字符。
0 0
- 关于Yii的菜单插件CMenu和面包屑breadcrumbs路径管理插件的一些使用问题
- 关于YII的菜单插件 CMenu - 和 面包末 breadcrumbs - 路径管理插件 的一些使用问题
- 关于YII的菜单插件 CMenu和面包末breadcrumbs路径管理插件的一些使用问题
- 关于Yii的菜单插件CMenu一些使用问题
- yii 1.1.*中菜单组件CMenu的使用
- yii插件的使用
- yii 时间插件的使用
- 第26款插件:jBreadCrumb 设计优化的面包屑菜单插件
- 菜单的建立和CMenu类的使用
- 关于Xcode一些常用插件的安装使用问题
- CMenu-关于菜单的销毁操作
- MFC 中CMenu菜单的的使用
- 关于select2插件的一些使用心得
- 关于xcode6 插件的管理使用
- ror 使用分页插件的一些问题
- YII框架调用插件PHPExcel的时候出现路径导入问题
- yii框架集成smarty后的CMenu使用
- 关于jquery md5插件的使用问题
- SQL 模糊查询
- Hadoop加速器GridGain
- Linux Mint + win10 双系统初体验
- pods的更新
- 第125讲:Hadoop集群管理之SecondaryNamenode目录元数据结构详解及其内幕机制学习笔记
- 关于Yii的菜单插件CMenu和面包屑breadcrumbs路径管理插件的一些使用问题
- java打开文件对话框
- Android 动画框架原理
- 【数据库1】数据库的一些基本概念
- MyBatis之select
- C++指针与引用在传递函数参数时的作用
- CSS3的学习笔记---制作翘边阴影
- java-内存模型-概述
- [温故而知新] 《深度探索c++对象模型》——对象数据成员的内存布局