在使用 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框架设计的一个扩展,它整合了Twitter Bootstrap的前端开发工具集,使得在Yii中构建响应式、优雅的用户界面变得轻而易举。Bootstrap是一款广泛使用的开源UI框架,提供了丰富的组件和样式...
总之,"yii2 图片上传扩展插件"提供了便捷的方式来处理Yii2应用中的图片上传任务,通过优化用户体验、错误处理和存储管理,让开发者能更专注于业务逻辑,而不是文件上传的细节。正确集成并使用这个插件,将大大提高...
yii2-plugins-system, 带有事件管理器和https的Yii2插件系统模块 Yii2-plugins-system入门 Yii2-plugins-system是设计用来工作的。 这意味着安装需要最少的步骤。 你应该只需要一个配置步骤,你就可以在Yii2网站上...
在实际开发过程中,我们需要确保这个插件与Yii2框架的其他部分无缝集成,同时也要关注性能优化,如使用异步上传、图片压缩等技术来减少服务器负载和提高用户体验。此外,还要考虑安全问题,例如防止恶意文件上传和...
5. **日志记录**:在处理支付过程中,可能会遇到各种异常情况,插件可能会有日志记录功能,方便开发者追踪和调试问题。 6. **错误处理**:当支付宝返回错误时,插件应能适当地处理并返回给前端友好的错误信息。 7....
总结来说,"基于yii2的企业通用管理后台"是一个集成了支付宝支付、一键安装、插件化和响应式设计等众多优点的高效后台系统。它尤其适合那些需要快速开发和部署的中小型企业,既能满足基本的管理需求,又具有高度的...
Yii summernote富文本插件 1、修改summernote图片上传设置附件上传地址 2、编辑代码 高亮显示 可选项 3、使用方便,直接作为Inputwedit形式使用 4、作为yii扩展引用 5、yii1.x版本支持
### yii的小部件使用 在Yii框架中,小部件(Widgets)是用于封装并重用页面元素的一种机制。本文主要探讨如何在Yii框架中...同时,通过本篇介绍的方法,我们也能更好地理解和掌握Yii框架中的一些核心概念和技术细节。
Yii2扩展开发与代码复用是当前流行的PHP开发框架Yii2的一个...同时,了解和掌握资源包类的属性和方法,能够帮助开发者更准确地管理前端资源,避免版本控制中出现的问题,从而在多应用项目中实现有效的资源管理和复用。
### yii权限管理总结与分析 #### 一、概述 在Yii框架中,权限管理是实现应用安全性的重要组成部分。本文将详细介绍Yii框架中的权限管理机制,包括角色(Role)、任务(Task)、操作(Operation)等概念,并结合示例代码...
首先,Yii框架的核心特性包括MVC(模型-视图-控制器)设计模式、Active Record ORM(对象关系映射)、I18N和L10N(国际化和本地化)支持、缓存策略、安全性和权限管理等。MVC模式使得代码结构清晰,易于维护。Active...
3. **组件和插件**:介绍一些常用的Yii扩展和第三方插件,如Gii代码生成工具,CGridView数据展示等。 4. **RESTful API开发**:如何使用Yii构建符合REST原则的API服务。 5. **模板引擎和视图**:深入理解Yii的视图...
无需编辑任何文件即可配置插件,它可以在管理控制面板上安装,卸载,启用和禁用。 插件不会修改项目文件,可以安全地将其卸载。 可扩展。 可以将钩子添加到任何视图。 封装Yii函数,便于非Yii开发人员创建插件 ...
12. 社区支持:Yii 拥有活跃的社区,提供丰富的扩展库和插件,以及详尽的文档和教程,便于开发者解决问题和学习新技术。 总的来说,“yii-1.0.4.r920”是 Yii 框架的一个重要里程碑,它为 PHP 开发者提供了一套强大...
Yii2框架遵循MVC(模型-视图-控制器)设计模式,强调代码重用、敏捷开发,并提供丰富的组件和插件,能够加速开发进程,提高代码的可维护性。Yii2框架拥有灵活的缓存支持、安全性特性、强大的测试和调试工具、以及对...
使用Composer管理项目依赖,方便安装和更新Yii2和其他第三方库,保持项目整洁有序。 12. **部署与优化** Yii2支持各种服务器环境,并且提供了一些性能优化手段,如开启OPcache、配置Nginx或Apache等。 总的来说...
这个“yii2.0后台源码”是一个带有权限管理功能的后端框架,它适用于各种项目需求,特别是那些需要强大用户管理和权限控制的复杂系统。让我们深入探讨一下这个框架的核心特性、权限管理以及如何在实际项目中应用。 ...
"yii2 通用后台系统"是一个基于Yii2框架构建的企业级后台管理系统,旨在提供一套全面、高效的后台管理解决方案,包括用户管理、权限控制、数据统计等功能,帮助开发者快速搭建稳定且功能丰富的后台应用。 在Yii2...