国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

使用Yii2 rbac權限控制菜單menu

2020-03-22 19:06:52
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Yii2 rbac權限控制之菜單menu實例教程的相關資料,需要的朋友可以參考下

在上篇文章給大家介紹了yii2搭建完美后臺并實現rbac權限控制實例教程中完美實現了yii2的后臺搭建和rbac權限控制,如果你還沒有實現,請先看上文再回來參考本文,因為本文是在上文的基礎上進行完善和補充。

部分小伙們紛紛反映,最后菜單menu怎么控制權限呀,看不懂,搞不定,而且你那貌似沒搞完,瞎忽悠!確實沒那么全,今天看我們如何實現菜單完美權限化。先羅列下主要講的內容,不需要的沒必要看下去,只為分享給有需要的人。

利用menu表添加菜單

左側菜單結果adminlte完美呈現

菜單前面自定義icon小圖標并呈現

如何控制菜單的顯示或者隱藏

頁面操作按鈕沒權限的不做顯示

gridview中也只顯示有操作權限的按鈕

嗯,差不多就這么多,如果你還有其他的有關權限控制菜單的需求,請下方留言,咱們共同切磋交流。

先看圖預覽下大致效果,不然怎么激起你們好學的心。

首先我們先訪問路由頁面 /dmin/route/index ,盡可能的把左側的全部選中,然后移動到右側,,然后記得給當前用戶分配相關的可訪問權限哦。

接下來訪問菜單列表 /admin/menu/index 點擊添加菜單,如果這個時候你沒有權限訪問了,請你在配置文件的 as access文件內暫時允許當前用戶訪問任意權限,并在我們添加完權限的時候去掉as access的設置,一定要記得哦,不然權限失效了可別回來找我。

這里我們先填寫上圖中標紅的四個字段

舉個例子:我們要添加一級菜單 權限管理

名稱請填寫 權限管理 ,因為是一級菜單,父級名稱請留空,路由我們這里選擇 /admin/default/index ,注意了,如果匹配到任何路由,請訪問路由頁面把左側的選中移動到右側。

映射,其實就是排序高低的問題,比如說我添加了兩個菜單,映射值為1的就在上面 值為2的就在1的下面,我們這里填寫數字1。

數據 這一項我們后面再說。

按照剛剛介紹的這種方式添加吧,舉一個添加二級菜單 權限控制 的例子

只需要把父級名稱這里填寫我們剛剛添加成功的一級名稱 權限管理 即可。其他照舊。不會操作的多看兩遍,這里最好把權限管理的幾個菜單全部添加完畢,因為接下來我們需要且你可以多練練手嘛。

到此我們已經會添加菜單了。

我們來看下一步,利用我們之前搭建的后臺框架進行展現。

use mdm/admin/components/MenuHelper; echo dmstr/widgets/Menu::widget( [ options = [ html' target='_blank'>class = sidebar-menu ],  items = MenuHelper::getAssignedMenu(Yii::$app- user- id), ] );

是不是很簡單,What?我的怎么沒有dmstr這玩意,不好意思,已經說的很多遍,需要先看上文再有這個菜單的結合。

ok,刷新頁面看看你的菜單,雖然我們還沒完全實現我們想要的功能,不過到此你應該能看到你的菜單展現了。

接下來將進入我們的重點以及難點,我們要實現菜單前面的小圖標且完成菜單可隱藏控制。

還記得我們一開始創建菜單的時候,唯一沒進行填寫的選項 數據 嗎?為了后續操作方便,我們這里一并把圖標和隱藏的選項都填寫上。我們以開始截圖中的 后臺用戶管理 這個二級菜單為例進行修改。截圖大家先看看我們的菜單目前的狀態,

請在其更新頁面的“數據”項中務必填寫下面的代碼,如果你有新的想法,還請先按照我的思路后面再做修改,因為后面我們要進行操作。

{ icon : fa fa-user , visible : false}

是的,這個 數據 項我們填寫的是一段json代碼,接下來我們對展示菜單的代碼也做稍微的整改,為了方便大家看代碼,這里的$callback直接寫在頁面上了,回頭大家可以繼續封裝優化。

use mdm/admin/components/MenuHelper;  ?php $callback = function($menu){ $data = json_decode($menu[ data ], true); $items = $menu[ children $return = [  label = $menu[ name ],  url = [$menu[ route ]], //處理我們的配置 if ($data) { //visible isset($data[ visible ]) $return[ visible ] = $data[ visible //icon isset($data[ icon ]) $data[ icon ] $return[ icon ] = $data[ icon //other attribute e.g. class... $return[ options ] = $data; //沒配置圖標的顯示默認圖標 (!isset($return[ icon ]) || !$return[ icon ]) $return[ icon ] = fa fa-circle-o $items $return[ items ] = $items; return $return; //這里我們對一開始寫的菜單menu進行了優化echo dmstr/widgets/Menu::widget( [  options = [ class = sidebar-menu ],  items = MenuHelper::getAssignedMenu(Yii::$app- user- id, null, $callback), ] ); ?         

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 瑞金市| 乌鲁木齐县| 武宁县| 崇州市| 波密县| 马关县| 西平县| 漳浦县| 科技| 楚雄市| 郸城县| 思茅市| 湾仔区| 民勤县| 共和县| 隆林| 卢龙县| 沛县| 芷江| 合山市| 嘉禾县| 壤塘县| 宜都市| 叶城县| 剑川县| 新营市| 尉氏县| 基隆市| 郯城县| 延边| 同仁县| 达日县| 普定县| 达州市| 定西市| 霍邱县| 甘谷县| 台中市| 靖州| 东乌| 敦煌市|