<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## RBAC集成AdminLTE后臺主題對菜單進行控制 本文參考自[yii2權限控制rbac之菜單menu最詳細教程](http://www.manks.top/article/yii2_rbac_menu)   對于RBAC權限的基本使用可以參看 Yii2項目后臺整合yii2-admin模塊 進行快速搭建。 這里通過用戶擁有的權限對后臺管理平臺的菜單進行控制。 ### 利用AdminLTE渲染后臺模板 后臺的模板這里采用[?AdminLTE](https://packagist.org/packages/dmstr/yii2-adminlte-asset#2.3.0)(Backend theme for Yii2 Framework) #### 安裝AdminLTE 可以參考[GitHub地址](https://github.com/dmstr/yii2-adminlte-asset),也可以參考之前寫的一個[總結地址](http://blog.webfsd.com/article-214.html)進行安裝。 #### yii2配置整合AdminLTE   建議拷貝`<project>/vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app`目錄下的`layouts`和`site`目錄拷貝并覆蓋掉`<project>/backend/views/`目錄下的`lauouts`和`site`對應的文件。   訪問后臺地址得到如下效果: ![](https://box.kancloud.cn/9b06bc704a0bc8497ee14b0c38743d39_1527x733.png) > 如果訪問權限相關的路徑,如`/admin/route/index`并不是上面看到的樣式,請將配置文件中的`modules`數組中配置的`layouts`的值刪掉即可。如下: ![](https://box.kancloud.cn/f10f6bad5cb6e6d9833958ca851275a8_721x146.png) ### 啟動更多可分配路由 我們先訪問路由頁面 `/admin/route` ,盡可能的把左側的全部選中,然后移動到右側。 ![](https://box.kancloud.cn/9810a7e6313ff42823ba2e488e4c7896_1348x587.png) > 并記得給當前用戶分配相關的可訪問權限。 ### 授權給用戶 參考上一篇RBAC授權方式對用戶進行授權,這里可以這樣測試。 1. 將admin用戶寫入到**超級管理員**并設置`/*`權限。 ![](https://box.kancloud.cn/55a1a6e55cc13ac959dfe985bf707230_1690x757.png) 2. 將test用戶授權**一般用戶組**,并使用超級管理員帳號控制一般用戶組權限。 ![](https://box.kancloud.cn/449cf87851541b7950bc6deac30bd946_1688x766.png) > 使用**admin**帳號登錄后臺訪問將有所有權限。使用**test**帳號登錄后臺僅有列表權限無法對數據進行增刪改操作。 ### 添加菜單 訪問菜單列表 `admin/menu` 點擊添加菜單`admin/menu/create`按鈕。 > 如果這個時候你沒有權限訪問了,需要在配置文件的 `as access`數組暫時允許當前用戶訪問任意權限,并在我們添加完權限的時候去掉`as access`的設置,切記。 > ![](https://box.kancloud.cn/988224e213599b13d1ea389807407bdb_568x185.png) 添加界面如下 ![](https://box.kancloud.cn/32c5074d661c7f9aa336e4e81d801f63_1686x573.png) ![](https://box.kancloud.cn/757353b82aeb643d85e11b606c016fea_1680x398.png) 1. 例如添加一級菜單"權限管理",按照如下填寫: - 名稱:權限管理 - 父級名稱:不填 - 路由:`/admin/default/index` - 排序:1 - 數據:暫不填寫 2. 添加一個二級菜單"角色列表",如下: - 名稱:角色列表 - 父級名稱:權限管理 - 路由:`/admin/role/index` - 排序:2 - 數據:暫不填寫 然后依次寫入:`權限列表(/admin/permission/index)`、`路由列表(admin/route/index)`、`規則管理(admin/rule/index)`、`分配用戶到角色(/admin/assignment/index)`等,具體如下。 ![](https://box.kancloud.cn/44d036e65c4a44d08c801ad378b94546_947x629.png) ### 展示菜單 修改`<project>/backend/views/layouts/left.php`文件(保證這個文件是從`<project>/vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app/views/layouts/left.php`地方復制過來的,否則去修改源文件),添加如下代碼: ```php use mdm\admin\components\MenuHelper; <?= dmstr\widgets\Menu::widget([ 'options' => ['class' => 'sidebar-menu'], 'items' => MenuHelper::getAssignedMenu(Yii::$app->user->id), ]); ?> ``` [TOC] ### 菜單小圖標并控制菜單顯示   我們在創建菜單的時候,沒填寫的"數據"一欄,我們填寫json數據`{"icon": "fa fa-user", "visible": false}`,其中icon代表列表前面的小圖標;visible表示是否顯示,值false表示隱藏,不填或者填true表示顯示(z這個選項可以用于開發者模式,比如開發者可見,不是開發模式不可見)。   接下來我們對展示菜單的代碼也做稍微的整改`<project>/vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app/views/layouts/left.php`增加一個callback處理函數。 ```php <?php use mdm\admin\components\MenuHelper; $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; }; ?> <?= dmstr\widgets\Menu::widget([ 'options' => ['class' => 'sidebar-menu'], 'items' => MenuHelper::getAssignedMenu(Yii::$app->user->id,null,$callback), ]); ?> ``` 修改效果如下(自定義了一個icon小圖標): ![](https://box.kancloud.cn/0052060ff3052f1bb2f3c22c7800ae78_1173x455.png) > 這里的`$callback`函數也只是針對上面我們添加菜單的"數據"項進行的分析。不難看出,我們對`icon`和`visible`分別進行了判斷,并追加到當前menu中。 [TOC] ### 控制頁面內的其他操作顯示與隱藏 這里以新建的goods操作為例,修改`<project>/advanced/backend/views/goods/index.php`頁面的一些控制,如`create`、`view`、`update`和`delete`操作的權限。 ```php //沒有創建權限不顯示按鈕 if (Helper::checkRoute('create')) { echo Html::a('Create Goods', ['create'], ['class' => 'btn btn-success']); } ?> <?= GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [ ['class' => 'yii\grid\SerialColumn'], 'id', 'goods_name', 'goods_number', 'goods_desc', 'created_at', // 'updated_at', [ 'class' => 'yii\grid\ActionColumn', 'template' => Helper::filterActionColumn('{view}{update}{delete}'), ], ], ]); ?> ``` 檢查當前用戶是否擁有上述權限`goods/index`、`goods/view`、`goods/create`.. 如果沒有效果請查看更新權限,如下。 ![](https://box.kancloud.cn/dd3d6e47c4986e738fcd58d4118e3aa8_925x523.png) **管理員**角色組相應得到的操作界面如下: ![](https://box.kancloud.cn/53adb1b4865a92684dd509d77f680586_941x342.png) 也就是說我們沒有權限的按鈕消失了,當在地址欄輸入`/goods/create`的時候你會發現也會提醒沒有權限。 > 也可以將這個修改更改到gii的自定義模板,加速開發。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看