`
dcj3sjt126com
  • 浏览: 1867173 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于YII的菜单插件 CMenu和面包末breadcrumbs路径管理插件的一些使用问题

    博客分类:
  • YII
阅读更多

在使用 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插件

    Yii-Bootstrap插件是专为Yii框架设计的一个扩展,它整合了Twitter Bootstrap的前端开发工具集,使得在Yii中构建响应式、优雅的用户界面变得轻而易举。Bootstrap是一款广泛使用的开源UI框架,提供了丰富的组件和样式...

    yii2 图片上传扩展插件

    总之,"yii2 图片上传扩展插件"提供了便捷的方式来处理Yii2应用中的图片上传任务,通过优化用户体验、错误处理和存储管理,让开发者能更专注于业务逻辑,而不是文件上传的细节。正确集成并使用这个插件,将大大提高...

    yii2-plugins-system, 带有事件管理器和https的Yii2插件系统模块.zip

    yii2-plugins-system, 带有事件管理器和https的Yii2插件系统模块 Yii2-plugins-system入门 Yii2-plugins-system是设计用来工作的。 这意味着安装需要最少的步骤。 你应该只需要一个配置步骤,你就可以在Yii2网站上...

    yii2图片裁剪插件

    在实际开发过程中,我们需要确保这个插件与Yii2框架的其他部分无缝集成,同时也要关注性能优化,如使用异步上传、图片压缩等技术来减少服务器负载和提高用户体验。此外,还要考虑安全问题,例如防止恶意文件上传和...

    yii2 支付宝扩展插件

    5. **日志记录**:在处理支付过程中,可能会遇到各种异常情况,插件可能会有日志记录功能,方便开发者追踪和调试问题。 6. **错误处理**:当支付宝返回错误时,插件应能适当地处理并返回给前端友好的错误信息。 7....

    基于yii2的企业通用管理后台

    总结来说,"基于yii2的企业通用管理后台"是一个集成了支付宝支付、一键安装、插件化和响应式设计等众多优点的高效后台系统。它尤其适合那些需要快速开发和部署的中小型企业,既能满足基本的管理需求,又具有高度的...

    Yii summernote富文本插件

    Yii summernote富文本插件 1、修改summernote图片上传设置附件上传地址 2、编辑代码 高亮显示 可选项 3、使用方便,直接作为Inputwedit形式使用 4、作为yii扩展引用 5、yii1.x版本支持

    yii的小部件使用

    ### yii的小部件使用 在Yii框架中,小部件(Widgets)是用于封装并重用页面元素的一种机制。本文主要探讨如何在Yii框架中...同时,通过本篇介绍的方法,我们也能更好地理解和掌握Yii框架中的一些核心概念和技术细节。

    Yii2扩展开发与代码复用:以资源包为例

    Yii2扩展开发与代码复用是当前流行的PHP开发框架Yii2的一个...同时,了解和掌握资源包类的属性和方法,能够帮助开发者更准确地管理前端资源,避免版本控制中出现的问题,从而在多应用项目中实现有效的资源管理和复用。

    yii权限管理总结、和分析

    ### yii权限管理总结与分析 #### 一、概述 在Yii框架中,权限管理是实现应用安全性的重要组成部分。本文将详细介绍Yii框架中的权限管理机制,包括角色(Role)、任务(Task)、操作(Operation)等概念,并结合示例代码...

    yii框架中文手册教程和YII模板

    首先,Yii框架的核心特性包括MVC(模型-视图-控制器)设计模式、Active Record ORM(对象关系映射)、I18N和L10N(国际化和本地化)支持、缓存策略、安全性和权限管理等。MVC模式使得代码结构清晰,易于维护。Active...

    使用yii敏捷开发web应用

    3. **组件和插件**:介绍一些常用的Yii扩展和第三方插件,如Gii代码生成工具,CGridView数据展示等。 4. **RESTful API开发**:如何使用Yii构建符合REST原则的API服务。 5. **模板引擎和视图**:深入理解Yii的视图...

    Yii-Plugin:yii插件模块

    无需编辑任何文件即可配置插件,它可以在管理控制面板上安装,卸载,启用和禁用。 插件不会修改项目文件,可以安全地将其卸载。 可扩展。 可以将钩子添加到任何视图。 封装Yii函数,便于非Yii开发人员创建插件 ...

    yii-1.0.4.r920

    12. 社区支持:Yii 拥有活跃的社区,提供丰富的扩展库和插件,以及详尽的文档和教程,便于开发者解决问题和学习新技术。 总的来说,“yii-1.0.4.r920”是 Yii 框架的一个重要里程碑,它为 PHP 开发者提供了一套强大...

    从零开始学YII2框架(三)扩展插件yii2-gird

    Yii2框架遵循MVC(模型-视图-控制器)设计模式,强调代码重用、敏捷开发,并提供丰富的组件和插件,能够加速开发进程,提高代码的可维护性。Yii2框架拥有灵活的缓存支持、安全性特性、强大的测试和调试工具、以及对...

    管理系统系列--基于yii2的cmf管理系统.zip

    使用Composer管理项目依赖,方便安装和更新Yii2和其他第三方库,保持项目整洁有序。 12. **部署与优化** Yii2支持各种服务器环境,并且提供了一些性能优化手段,如开启OPcache、配置Nginx或Apache等。 总的来说...

    yii2.0后台源码

    这个“yii2.0后台源码”是一个带有权限管理功能的后端框架,它适用于各种项目需求,特别是那些需要强大用户管理和权限控制的复杂系统。让我们深入探讨一下这个框架的核心特性、权限管理以及如何在实际项目中应用。 ...

    yii2 通用后台系统

    "yii2 通用后台系统"是一个基于Yii2框架构建的企业级后台管理系统,旨在提供一套全面、高效的后台管理解决方案,包括用户管理、权限控制、数据统计等功能,帮助开发者快速搭建稳定且功能丰富的后台应用。 在Yii2...

Global site tag (gtag.js) - Google Analytics