解决yii2左侧菜单子级无法高亮问题的方法总结计划.docx

解决yii2左侧菜单子级无法高亮问题的方法总结计划.docx

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
这篇文章主要为大家详细介绍了解决 yii2 左侧菜单子级无法高亮问题的方法,感兴趣的朋友可以参考一下 我们先来看看具体问题。 添加角色是属于角色这个菜单的, 如何在执行添加角色这个操作时让角色这个菜单处于选中状态呢? adminlte 左侧导航的 Create,View 等 action 不能定位到 index 的模块(左侧二级导航不能展开定位) 如果你是按照我们上文的教程来的, 那接下来所要说明的问题应该不是问题, 先来看看 我们当时是怎么处理左侧菜单 menu 的 use mdm\admin\components\MenuHelper;nbsp; lt;?phpnbsp; $callback = function($menu){nbsp; nbsp;// 鉴于篇幅有限,这里的代码省略,源码见于原文 };nbsp; //这里我们对一开始写的菜单 menu 进行了优化 echo dmstr\widgets\Menu::widget( [nbsp; nbsp;options =gt; [class =gt; sidebar-menu],nbsp; nbsp;items =gt; MenuHelper::getAssignedMenu(Yii::$app-gt;user-gt;id, null, $callback),nbsp; ] ); ?gt; 看到这里, 我们不妨打开文件 dmstr\widgets\Menu 看看这里是怎么实现左侧菜单选中这一困扰众多同学的问题。 protected function isItemActive($item) { nbsp;if (isset($item[url]) amp;amp; is_array($item[url]) amp;amp; isset($item[url][0])) { nbsp; //...... nbsp; if ($arrayRoute[0] !== $arrayThisRoute[0]) { nbsp; nbsp;return false; nbsp; } nbsp; if (isset($arrayRoute[1]) amp;amp; $arrayRoute[1] !== $arrayThisRoute[1]) { nbsp; nbsp;return false; nbsp; } nbsp; if (isset($arrayRoute[2]) amp;amp; $arrayRoute[2] !== $arrayThisRoute[2]) { nbsp; nbsp;return false; nbsp; } nbsp; //...... nbsp; return true; nbsp;} nbsp;return false; } 看吧,看上面的代码, 也就是说左侧菜单激活的情况是当前路由完全等于菜单路由时菜 单才进行激活。 鉴于我们一开始谈到的不少小伙伴疑惑的两个问题,我们这里只需要稍稍调整下代码, 判断控制到 controller 而非 action 即可,但是源码文件我们又不能修改, 怎么办好呢?天热,凉拌。 这里我们拷贝 dmstr\widgets\Menu.php 文件到 backend\components\Menu.php ,然后按照下面的方法修改 isItemActive 方法即可 protected function isItemActive($item) { nbsp;if (isset($item[url]) amp;amp; is_array($item[url]) isset($item[url][0])) { nbsp; nbsp; nbsp; //...... nbsp; // 改写了路由的规则,是否高亮判断到 controller 而非 action nbsp; $routeCount = count($arrayRoute); nbsp; if ($routeCount == 2) {  amp;amp; nbsp; nbsp;if ($arrayRoute[0] !== $arrayThisRoute[0]) { nbsp; nbsp; return false; nbsp; nbsp;} nbsp; } elseif ($routeCount == 3) { nbsp; nbsp;if ($arrayRoute[0] !== $arrayThisRoute[0]) { nbsp; nbsp; return false; nbsp; nbsp;} nbsp; nbsp;if (isset($arrayRoute[1]) amp;amp; $arrayRoute[1] !== $arrayThisRoute[1]) { nbsp;

文档评论(0)

153****8736 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档