解決yii2左側(cè)菜單子級無法高亮問題的方法
我們先來看看具體問題。
添加角色是屬于角色這個菜單的,如何在執(zhí)行添加角色這個操作時讓角色這個菜單處于選中狀態(tài)呢?
adminlte左側(cè)導(dǎo)航的Create,View等action不能定位到index的模塊(左側(cè)二級導(dǎo)航不能展開定位)
如果你是按照我們上文的教程來的,那接下來所要說明的問題應(yīng)該不是問題,先來看看我們當時是怎么處理左側(cè)菜單menu的
use mdm\admin\components\MenuHelper; <?php $callback = function($menu){ //鑒于篇幅有限,這里的代碼省略,源碼見于原文 }; //這里我們對一開始寫的菜單menu進行了優(yōu)化 echo dmstr\widgets\Menu::widget( [ 'options' => ['class' => 'sidebar-menu'], 'items' => MenuHelper::getAssignedMenu(Yii::$app->user->id, null, $callback), ] ); ?>
看到這里,我們不妨打開文件dmstr\widgets\Menu看看這里是怎么實現(xiàn)左側(cè)菜單選中這一困擾眾多同學(xué)的問題。
protected function isItemActive($item) { if (isset($item['url']) && is_array($item['url']) && isset($item['url'][0])) { //...... if ($arrayRoute[0] !== $arrayThisRoute[0]) { return false; } if (isset($arrayRoute[1]) && $arrayRoute[1] !== $arrayThisRoute[1]) { return false; } if (isset($arrayRoute[2]) && $arrayRoute[2] !== $arrayThisRoute[2]) { return false; } //...... return true; } return false; }
看吧,看上面的代碼,也就是說左側(cè)菜單激活的情況是當前路由完全等于菜單路由時菜單才進行激活。
鑒于我們一開始談到的不少小伙伴疑惑的兩個問題,我們這里只需要稍稍調(diào)整下代碼,判斷控制到controller而非action即可,但是源碼文件我們又不能修改,怎么辦好呢?天熱,涼拌。
這里我們拷貝dmstr\widgets\Menu.php文件到backend\components\Menu.php,然后按照下面的方法修改isItemActive方法即可
protected function isItemActive($item) { if (isset($item['url']) && is_array($item['url']) && isset($item['url'][0])) { //...... //改寫了路由的規(guī)則,是否高亮判斷到controller而非action $routeCount = count($arrayRoute); if ($routeCount == 2) { if ($arrayRoute[0] !== $arrayThisRoute[0]) { return false; } } elseif ($routeCount == 3) { if ($arrayRoute[0] !== $arrayThisRoute[0]) { return false; } if (isset($arrayRoute[1]) && $arrayRoute[1] !== $arrayThisRoute[1]) { return false; } } else { return false; } // if ($arrayRoute[0] !== $arrayThisRoute[0]) { // return false; // } // if (isset($arrayRoute[1]) && $arrayRoute[1] !== $arrayThisRoute[1]) { // return false; // } // if (isset($arrayRoute[2]) && $arrayRoute[2] !== $arrayThisRoute[2]) { // return false; // } //...... return true; } return false; }
大功告成,現(xiàn)在我們左側(cè)的菜單引用的Menu文件修改其指向到backend\components\Menu
use backend\components\Menu; echo Menu::widget([ 'options' => ['class' => 'sidebar-menu'], 'items' => MenuHelper::getAssignedMenu(Yii::$app->user->id, null, $callback), ]);
快去試試看我們的問題解決沒有吧。
- Android PopupWindow實現(xiàn)右側(cè)、左側(cè)和底部彈出菜單
- javascript仿京東導(dǎo)航左側(cè)分類導(dǎo)航下拉菜單效果
- jQuery模仿京東/天貓商品左側(cè)分類導(dǎo)航菜單效果
- jquery仿京東導(dǎo)航/仿淘寶商城左側(cè)分類導(dǎo)航下拉菜單效果
- winform樹形菜單無限級分類實例
- 仿當當網(wǎng)淘寶網(wǎng)等主流電子商務(wù)網(wǎng)站商品分類導(dǎo)航菜單
- PHP無限分類代碼,支持數(shù)組格式化、直接輸出菜單兩種方式
- iOS實現(xiàn)頂部標簽式導(dǎo)航欄及下拉分類菜單
- 原生JS實現(xiàn)仿淘寶網(wǎng)左側(cè)商品分類菜單效果代碼
- 最常見的左側(cè)分類菜單欄jQuery實現(xiàn)代碼
相關(guān)文章
thinkphp框架page類與bootstrap分頁(美化)
這篇文章主要介紹了thinkphp框架page類與bootstrap分頁(美化) ,需要的朋友可以參考下2017-06-06Yii框架在頁面輸出執(zhí)行sql語句以方便調(diào)試的實現(xiàn)方法
這篇文章主要介紹了Yii框架在頁面輸出執(zhí)行sql語句以方便調(diào)試的實現(xiàn)方法,涉及yiidebugtb的使用,是比較實用的技巧,需要的朋友可以參考下2014-12-12詳解Laravel5.6通過路由進行API版本控制的簡單方法
這篇文章主要介紹了詳解Laravel5.6通過路由進行API版本控制的簡單方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01php mysql數(shù)據(jù)庫操作類(實例講解)
本白演示的代碼屬于較為簡單的數(shù)據(jù)庫封裝類,較適合初學(xué),需要的朋友可以參考下2017-08-08