亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

yii2 rbac權限控制之菜單menu詳細教程

2020-03-22 19:16:34
字體:
來源:轉載
供稿:網友
  • 作者:白狼 出處:http://www.manks.top/article/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 mdmadmincomponentsMenuHelper; echo dmstrwidgetsMenu::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 mdmadmincomponentsMenuHelper; <?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 dmstrwidgetsMenu::widget( [     'options' => ['class' => 'sidebar-menu'],     'items' => MenuHelper::getAssignedMenu(Yii::$app->user->id, null, $callback), ] ); ?>

    是的,你沒有看錯,代碼是有點長,我們來簡單分析分析。其實我們這里的$callback方法也只是針對上面我們添加菜單的'數據'項進行的分析。不難看出,我們對icon和visible分別進行了判斷,并追加到當前menu中。

    到此,我們費了一番波折終于實現菜單加icon和設置菜單的隱藏。如果你有其他的屬性需要進行配置,此處仍然可以繼續單獨配置。

    現在,我們還有兩個任務仍待完成,要完成接下來的兩個任務,為了大家的方便,建議你的項目可以自定義配置gii模版,不支持自定義gii模板的可以參考自定義gii模版當你發現我們后面需要做的功能,我覺得你會贊嘆我們這里的操作。

    為了方便操作,我們這里增加一個測試表test,我們先用未做修改的gii模版生成一份model+curd。我們先把test/*的所有權限分配給當前登錄的用戶,并添加一條數據。打開/test我們可以正??吹较旅娴慕貓D,注意圖中的兩個標記。

    然后我們打開test/index.php文件,對標記的兩個地方進行如下修改

    use mdmadmincomponentsHelper; <?php //沒有創建權限不顯示按鈕 if(Helper::checkRoute('create')) {     echo Html::a('Create Test', ['create'], ['class' => 'btn btn-success']); } ?> <?= GridView::widget([     // ......     'columns' => [         // ......         [             'class' => 'yiigridActionColumn',             'template' => Helper::filterActionColumn('{view}{update}{delete}'),         ],     ], ]); ?>

    現在我們刷新下頁面/test再看看,好像沒什么變化嘛。別急,我們現在撤銷當前用戶的/test/create 權限和/test/update權限,然后你在刷新下頁面看看效果,我們截圖看看。

    也就是說我們沒有權限的按鈕消失了,當你手動訪問/test/create的時候你會發現也會提醒你沒有權限。

    如果你的gii模板是自定義的,相信你會迅速在其生成的模板中所有的操作上添加權限控制的,是不是很happy

    最后,我們的菜單menu關于權限控制的講解基本也就結束了,長篇大論,仔細回想起來也沒多少東西,倒是希望能幫到你一二

      PHP編程

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

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
    久久久成人精品视频| 久久视频在线免费观看| 操91在线视频| 欧美一级高清免费播放| 98精品国产高清在线xxxx天堂| 日韩精品视频在线观看免费| 国产精品无av码在线观看| 久久久久久久久网站| 国产精品在线看| 国产精品久久久久久久午夜| 欧美一区二区三区四区在线| yellow中文字幕久久| 亚洲欧美日韩国产中文| 国产精品人成电影| 欧美激情精品久久久久| 欧美—级高清免费播放| 九色精品美女在线| 欧美精品电影在线| 亚洲欧美在线一区| 亚洲欧美日韩国产成人| 国产热re99久久6国产精品| 91手机视频在线观看| 中文字幕视频在线免费欧美日韩综合在线看| 久久久久久久久久久久久久久久久久av| 97视频在线观看网址| 欧美日韩在线第一页| 亚洲一区二区三区sesese| 国产精品九九久久久久久久| 在线观看精品国产视频| 国产精品99久久久久久久久久久久| 精品国产一区二区三区久久狼黑人| 欧美激情精品久久久久久免费印度| 久久伊人91精品综合网站| 久久免费视频网| 国产精品99久久久久久人| 亚洲精品一区在线观看香蕉| 精品香蕉一区二区三区| 国产91热爆ts人妖在线| 欧美在线观看一区二区三区| 亚洲国产精品热久久| 91在线色戒在线| 97在线免费视频| 亚洲国产一区二区三区在线观看| 亚洲九九九在线观看| 国产一区二区三区三区在线观看| 奇米四色中文综合久久| 97在线视频免费| 国模吧一区二区| 欧美大片免费观看| 成人性生交xxxxx网站| 色偷偷综合社区| 97av视频在线| 国产亚洲在线播放| 欧美成人精品三级在线观看| 成人黄色在线播放| 欧美日韩在线影院| 亚洲精品久久久久久久久久久| 日本午夜人人精品| 亚洲综合视频1区| 亚洲高清免费观看高清完整版| 久久精品国产一区二区三区| 欧美性生交大片免网| 欧美激情中文字幕乱码免费| 欧洲成人在线观看| 精品视频—区二区三区免费| 欧美极度另类性三渗透| 日韩在线观看成人| 黄色成人在线播放| 亚洲乱码一区av黑人高潮| 精品久久久在线观看| 97视频在线观看免费| 久久人人爽人人爽人人片av高清| 久久精品男人天堂| 亚洲丁香婷深爱综合| 在线成人激情视频| 欧美剧在线观看| 日韩精品极品视频免费观看| 欧美精品免费在线| 国产精品尤物福利片在线观看| 国产专区欧美专区| 在线观看国产成人av片| 亚洲成人黄色在线| 中文字幕在线视频日韩| 日韩av在线免播放器| 福利精品视频在线| 97视频免费在线观看| 亚洲精品aⅴ中文字幕乱码| 日韩av电影在线网| 亚洲美女av黄| 欧美华人在线视频| 俺去了亚洲欧美日韩| www.欧美免费| 91免费视频国产| 91网站在线看| 成人午夜高潮视频| 亚洲视频欧洲视频| 国产精品爱啪在线线免费观看| 精品国产欧美一区二区三区成人| 精品国偷自产在线视频| 日韩有码在线播放| 黑人巨大精品欧美一区二区三区| 久久久久久九九九| 亚洲国产精品一区二区久| 久久久女人电视剧免费播放下载| 2019亚洲男人天堂| 久久国产视频网站| 国产精品一区二区三区毛片淫片| 欧美成人四级hd版| 久久久久在线观看| 日韩精品免费在线播放| 久久久精品欧美| 欧美成aaa人片在线观看蜜臀| 国产热re99久久6国产精品| 不卡在线观看电视剧完整版| 亚洲精品中文字幕女同| 亚洲大胆人体在线| 中文字幕av一区中文字幕天堂| 国产精品白嫩初高中害羞小美女| 日韩专区在线观看| 国产精品小说在线| 成人日韩在线电影| 国产亚洲欧洲黄色| 国产精品亚洲激情| 欧美影院在线播放| 亚洲人成网站999久久久综合| 久久成人国产精品| 91国自产精品中文字幕亚洲| 亚洲精品视频久久| 久久久精品国产一区二区| 91免费综合在线| 久久精品国产欧美亚洲人人爽| 国产精品视频自拍| 欧美一区二区三区四区在线| 久久精品2019中文字幕| 国产成人精品久久二区二区91| 亚洲а∨天堂久久精品喷水| 91亚洲午夜在线| 亚洲国内精品在线| 亚洲人成网站777色婷婷| 国产精品成人va在线观看| 亚洲欧美日韩国产中文| 国产69精品久久久久9| 亚洲欧美另类在线观看| 午夜精品蜜臀一区二区三区免费| 欧美亚洲午夜视频在线观看| 91久久久久久久久久久久久| 少妇高潮 亚洲精品| www.精品av.com| 欧洲一区二区视频| 欧美成aaa人片在线观看蜜臀| 亚洲成人a级网| 精品国产91久久久| 国产99久久久欧美黑人| 欧美一级电影免费在线观看| 国产日韩欧美在线视频观看| 国产精品亚洲美女av网站| 裸体女人亚洲精品一区| 日韩性生活视频| 97在线日本国产| 久久中文精品视频| 国产精自产拍久久久久久蜜| 亚洲精品美女久久久久| 国产精品欧美日韩久久| 91精品国产综合久久香蕉的用户体验|