解決yii2左側(cè)菜單子級無法高亮問題的方法
我們先來看看具體問題。
添加角色是屬于角色這個菜單的,如何在執(zhí)行添加角色這個操作時讓角色這個菜單處于選中狀態(tài)呢?
adminlte左側(cè)導(dǎo)航的Create,View等action不能定位到index的模塊(左側(cè)二級導(dǎo)航不能展開定位)
如果你是按照我們上文的教程來的,那接下來所要說明的問題應(yīng)該不是問題,先來看看我們當(dā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è)菜單激活的情況是當(dāng)前路由完全等于菜單路由時菜單才進行激活。
鑒于我們一開始談到的不少小伙伴疑惑的兩個問題,我們這里只需要稍稍調(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樹形菜單無限級分類實例
- 仿當(dāng)當(dāng)網(wǎng)淘寶網(wǎng)等主流電子商務(wù)網(wǎng)站商品分類導(dǎo)航菜單
- PHP無限分類代碼,支持?jǐn)?shù)組格式化、直接輸出菜單兩種方式
- iOS實現(xiàn)頂部標(biāo)簽式導(dǎo)航欄及下拉分類菜單
- 原生JS實現(xiàn)仿淘寶網(wǎng)左側(cè)商品分類菜單效果代碼
- 最常見的左側(cè)分類菜單欄jQuery實現(xiàn)代碼
相關(guān)文章
Yii2針對指定url的生成及圖片等的引入方法小結(jié)
這篇文章主要介紹了Yii2針對指定url的生成及圖片等的引入方法,針對常用的URL格式及圖片路徑操作結(jié)合實例進行了對比分析,需要的朋友可以參考下2016-07-07
Thinkphp5+plupload實現(xiàn)的圖片上傳功能示例【支持實時預(yù)覽】
這篇文章主要介紹了Thinkphp5+plupload實現(xiàn)的圖片上傳功能,結(jié)合具體實例形式分析了thinkPHP5結(jié)合plupload實現(xiàn)可支持實時預(yù)覽的圖片上傳功能相關(guān)操作技巧,需要的朋友可以參考下2019-05-05

