yii2 左側(cè)菜單子級(jí)無(wú)法高亮的問(wèn)題,yii2菜單子_PHP教程
Jul 12, 2016 am 08:53 AMyii2 左側(cè)菜單子級(jí)無(wú)法高亮的問(wèn)題,yii2菜單子
作者:白狼 出處:http://www.manks.top/question/20160508000001.html?本文版權(quán)歸作者,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。
前面我們寫的文章yii2 rbac權(quán)限控制之菜單menu詳細(xì)教程,很完美,也很實(shí)用,鑒于不少小伙伴咨詢的問(wèn)題,這里做一個(gè)統(tǒng)一的說(shuō)明。我們先來(lái)看看具體問(wèn)題。
添加角色是屬于角色這個(gè)菜單的,如何在執(zhí)行添加角色這個(gè)操作時(shí)讓角色這個(gè)菜單處于選中狀態(tài)呢?
adminlte左側(cè)導(dǎo)航的Create,View等action不能定位到index的模塊(左側(cè)二級(jí)導(dǎo)航不能展開定位)
如果你是按照我們上文的教程來(lái)的,那接下來(lái)所要說(shuō)明的問(wèn)題應(yīng)該不是問(wèn)題,先來(lái)看看我們當(dāng)時(shí)是怎么處理左側(cè)菜單menu的
<span>use</span><span> mdm\admin\components\MenuHelper; </span><?<span>php </span><span>$callback</span> = <span>function</span>(<span>$menu</span><span>){ </span><span>//</span><span>鑒于篇幅有限,這里的代碼省略,源碼見于原文</span> <span>}; </span><span>//</span><span>這里我們對(duì)一開始寫的菜單menu進(jìn)行了優(yōu)化</span> <span>echo</span> dmstr\widgets\Menu::<span>widget( [ </span>'options' => ['class' => 'sidebar-menu'], 'items' => MenuHelper::getAssignedMenu(Yii::<span>$app</span>->user->id, <span>null</span>, <span>$callback</span>),<span> ] ); </span>?>
看到這里,我們不妨打開文件dmstr\widgets\Menu看看這里是怎么實(shí)現(xiàn)左側(cè)菜單選中這一困擾眾多同學(xué)的問(wèn)題。
<span>protected</span> <span>function</span> isItemActive(<span>$item</span><span>) { </span><span>if</span> (<span>isset</span>(<span>$item</span>['url']) && <span>is_array</span>(<span>$item</span>['url']) && <span>isset</span>(<span>$item</span>['url'][0<span>])) { </span><span>//</span><span>......</span> <span>if</span> (<span>$arrayRoute</span>[0] !== <span>$arrayThisRoute</span>[0<span>]) { </span><span>return</span> <span>false</span><span>; } </span><span>if</span> (<span>isset</span>(<span>$arrayRoute</span>[1]) && <span>$arrayRoute</span>[1] !== <span>$arrayThisRoute</span>[1<span>]) { </span><span>return</span> <span>false</span><span>; } </span><span>if</span> (<span>isset</span>(<span>$arrayRoute</span>[2]) && <span>$arrayRoute</span>[2] !== <span>$arrayThisRoute</span>[2<span>]) { </span><span>return</span> <span>false</span><span>; } </span><span>//</span><span>......</span> <span>return</span> <span>true</span><span>; } </span><span>return</span> <span>false</span><span>; }</span>
看吧,看上面的代碼,也就是說(shuō)左側(cè)菜單激活的情況是當(dāng)前路由完全等于菜單路由時(shí)菜單才進(jìn)行激活。
鑒于我們一開始談到的不少小伙伴疑惑的兩個(gè)問(wèn)題,我們這里只需要稍稍調(diào)整下代碼,判斷控制到controller而非action即可,但是源碼文件我們又不能修改,怎么辦好呢?天熱,涼拌。
這里我們拷貝dmstr\widgets\Menu.php文件到backend\components\Menu.php,然后按照下面的方法修改isItemActive方法即可
<span>protected</span> <span>function</span> isItemActive(<span>$item</span><span>) { </span><span>if</span> (<span>isset</span>(<span>$item</span>['url']) && <span>is_array</span>(<span>$item</span>['url']) && <span>isset</span>(<span>$item</span>['url'][0<span>])) { </span><span>//</span><span>...... //改寫了路由的規(guī)則,是否高亮判斷到controller而非action</span> <span>$routeCount</span> = <span>count</span>(<span>$arrayRoute</span><span>); </span><span>if</span> (<span>$routeCount</span> == 2<span>) { </span><span>if</span> (<span>$arrayRoute</span>[0] !== <span>$arrayThisRoute</span>[0<span>]) { </span><span>return</span> <span>false</span><span>; } } </span><span>elseif</span> (<span>$routeCount</span> == 3<span>) { </span><span>if</span> (<span>$arrayRoute</span>[0] !== <span>$arrayThisRoute</span>[0<span>]) { </span><span>return</span> <span>false</span><span>; } </span><span>if</span> (<span>isset</span>(<span>$arrayRoute</span>[1]) && <span>$arrayRoute</span>[1] !== <span>$arrayThisRoute</span>[1<span>]) { </span><span>return</span> <span>false</span><span>; } } </span><span>else</span><span> { </span><span>return</span> <span>false</span><span>; } </span><span>//</span><span> 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; // } //......</span> <span>return</span> <span>true</span><span>; } </span><span>return</span> <span>false</span><span>; }</span>
大功告成,現(xiàn)在我們左側(cè)的菜單引用的Menu文件修改其指向到backend\components\Menu
<span>use</span><span> backend\components\Menu; </span><span>echo</span> Menu::<span>widget([ </span>'options' => ['class' => 'sidebar-menu'], 'items' => MenuHelper::getAssignedMenu(Yii::<span>$app</span>->user->id, <span>null</span>, <span>$callback</span>),<span> ]); </span>
?
快去試試看我們的問(wèn)題解決沒(méi)有吧。
menuyii2

熱AI工具

Undress AI Tool
免費(fèi)脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機(jī)

Video Face Swap
使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺(jué)化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版
神級(jí)代碼編輯軟件(SublimeText3)

聚類算法中的聚類效果評(píng)估問(wèn)題,需要具體代碼示例聚類是一種無(wú)監(jiān)督學(xué)習(xí)方法,通過(guò)對(duì)數(shù)據(jù)進(jìn)行聚類,將相似的樣本歸為一類。在聚類算法中,如何評(píng)估聚類的效果是一個(gè)重要的問(wèn)題。本文將介紹幾種常用的聚類效果評(píng)估指標(biāo),并給出相應(yīng)的代碼示例。一、聚類效果評(píng)估指標(biāo)輪廓系數(shù)(SilhouetteCoefficient)輪廓系數(shù)是通過(guò)計(jì)算樣本的緊密度和與其他簇的分離度來(lái)評(píng)估聚類效

iPhone以其強(qiáng)大的性能和多方面的功能而聞名,它不能幸免于偶爾的打嗝或技術(shù)困難,這是復(fù)雜電子設(shè)備的共同特征。遇到iPhone問(wèn)題可能會(huì)讓人感到沮喪,但通常不需要警報(bào)。在這份綜合指南中,我們旨在揭開與iPhone使用相關(guān)的一些最常遇到的挑戰(zhàn)的神秘面紗。我們的分步方法旨在幫助您解決這些常見問(wèn)題,提供實(shí)用的解決方案和故障排除技巧,讓您的設(shè)備恢復(fù)到最佳工作狀態(tài)。無(wú)論您是面對(duì)一個(gè)小故障還是更復(fù)雜的問(wèn)題,本文都可以幫助您有效地解決這些問(wèn)題。一般故障排除提示在深入研究具體的故障排除步驟之前,以下是一些有助于

解決C++代碼中出現(xiàn)的“error:redefinitionofclass'ClassName'”問(wèn)題在C++編程中,我們經(jīng)常會(huì)遇到各種各樣的編譯錯(cuò)誤。其中一個(gè)常見的錯(cuò)誤是“error:redefinitionofclass'ClassName'”(類‘ClassName’的重定義錯(cuò)誤)。這個(gè)錯(cuò)誤通常出現(xiàn)在同一個(gè)類被定義了多次的情況下。本文將

如龍8酒類大師考試涉及的問(wèn)題包括哪些?對(duì)應(yīng)的答案是什么?如何快速通過(guò)考試?酒類大師考試活動(dòng)中有許多需要回答的問(wèn)題,我們可以參考答案來(lái)解決。這些問(wèn)題都涉及到酒的知識(shí)。如果需要參考,讓我們一起來(lái)看看如龍8酒類大師考試問(wèn)題答案的詳細(xì)解析!如龍8酒類大師考試問(wèn)題答案詳解1、關(guān)于“酒”的問(wèn)題。這是一種管由王室建立的蒸餾灑廠生產(chǎn)的蒸餾酒,以夏威夷大量種植的甘盤的糖分為原料釀制。請(qǐng)問(wèn)這種酒叫什么?答:朗姆酒2、關(guān)于“酒”的問(wèn)題。圖片上是一種使用干琴灑和干苦艾酒調(diào)配而成的酒。它的特點(diǎn)是加入了橄欖,被譽(yù)為“雞尼酒

Steam是十分受歡迎的一個(gè)平臺(tái)游戲,擁有眾多優(yōu)質(zhì)游戲,可是有些win10用戶體現(xiàn)自己下載不了steam,這是怎么回事呢?極有可能是用戶的ipv4服務(wù)器地址沒(méi)有設(shè)置好。要想解決這個(gè)問(wèn)題的話,你可以試著在兼容模式下安裝Steam,隨后手動(dòng)修改一下DNS服務(wù)器,將其改成114.114.114.114,以后應(yīng)當(dāng)就能下載了。win10下載不了steam怎么辦:WIn10下能夠試著兼容模式下安裝,更新后必須關(guān)掉兼容模式,不然網(wǎng)頁(yè)將無(wú)法加載。點(diǎn)擊程序安裝的屬性,以兼容模式運(yùn)作運(yùn)行這個(gè)程序。重啟以增加內(nèi)存,電

解決jQuery.val()無(wú)法使用的問(wèn)題,需要具體代碼示例對(duì)于前端開發(fā)者,使用jQuery是常見的操作之一。其中,使用.val()方法來(lái)獲取或設(shè)置表單元素的值是非常常見的操作。然而,在一些特定的情況下,可能會(huì)出現(xiàn)無(wú)法使用.val()方法的問(wèn)題。本文將介紹一些常見的情況以及解決方案,并提供具體的代碼示例。問(wèn)題描述在使用jQuery開發(fā)前端頁(yè)面時(shí),有時(shí)候會(huì)碰

解決PHP報(bào)錯(cuò):繼承父類時(shí)遇到的問(wèn)題在PHP中,繼承是一種重要的面向?qū)ο缶幊痰奶匦浴Mㄟ^(guò)繼承,我們能夠重用已有的代碼,并且能夠在不修改原有代碼的情況下,對(duì)其進(jìn)行擴(kuò)展和改進(jìn)。盡管繼承在開發(fā)中應(yīng)用廣泛,但有時(shí)候在繼承父類時(shí)可能會(huì)遇到一些報(bào)錯(cuò)問(wèn)題,本文將圍繞解決繼承父類時(shí)遇到的常見問(wèn)題進(jìn)行討論,并提供相應(yīng)的代碼示例。問(wèn)題一:未找到父類在繼承父類的過(guò)程中,如果系統(tǒng)無(wú)

弱監(jiān)督學(xué)習(xí)中的標(biāo)簽獲取問(wèn)題,需要具體代碼示例引言:弱監(jiān)督學(xué)習(xí)是一種利用弱標(biāo)簽進(jìn)行訓(xùn)練的機(jī)器學(xué)習(xí)方法。與傳統(tǒng)的監(jiān)督學(xué)習(xí)不同,弱監(jiān)督學(xué)習(xí)只需利用較少的標(biāo)簽來(lái)訓(xùn)練模型,而不是每個(gè)樣本都需要有準(zhǔn)確的標(biāo)簽。然而,在弱監(jiān)督學(xué)習(xí)中,如何從弱標(biāo)簽中準(zhǔn)確地獲取有用的信息是一個(gè)關(guān)鍵問(wèn)題。本文將介紹弱監(jiān)督學(xué)習(xí)中的標(biāo)簽獲取問(wèn)題,并給出具體的代碼示例。弱監(jiān)督學(xué)習(xí)中的標(biāo)簽獲取問(wèn)題簡(jiǎn)介:
