Yii2.0-advanced-3—為yii2新增後臺模板adminlte和許可權元件yii2-admin
一、yii2-adminlte-asset
adminlte一款基於bootstrap的響應模組。yii2-adminlte-asset更是一款基於yii2框架進行開發的後臺主題模版。
1、安裝(安裝前先執行composer self-update)composer require dmstr/yii2-adminlte-asset "2.*"
等待幾分鐘完成後, 拷貝 vendor\dmstr\yii2-adminlte-asset\example-views\yiisoft\yii2-app 目錄下面的檔案到專案 backend\views, 可直接進行覆蓋替換;開啟訪問後臺主頁和登入頁:
2、開啟 backend\views\layouts\main.php,找到body將其class修改如下,可以改變不同的顏色主題:
"skin-blue",
"skin-black",
"skin-red",
"skin-yellow",
"skin-purple",
"skin-green",
"skin-blue-light",
"skin-black-light",
"skin-red-light",
"skin-yellow-light",
"skin-purple-light",
"skin-green-light"
二、yii2-admin許可權元件
yii2-admin是一個基於yii2的許可權管理元件,使用它可以快速搭建視覺化的許可權管理功能;
1、首先建立yii2的rbac資料表,資料庫遷移檔案在vendor\yiisoft\yii2\rbac 目錄下,執行: yii migrate --migrationPath=@yii/rbac/migrations/
輸入會會報錯提示我們要新增許可權元件配置:
Exception 'yii\base\InvalidConfigException' with message 'You should configure "authManager" component
開啟 common\config\main.php 檔案,在 components 陣列中加入 authManager 元件
//authManager有PhpManager和DbManager兩種方式, //PhpManager將許可權關係儲存在檔案裡,這裡使用的是DbManager方式,將許可權關係儲存在資料庫. "authManager" => [ "class" => 'yii\rbac\DbManager', ],
再次執行遷移就可以了,建立的表含義:
auth_item:用於儲存角色、許可權和路由;
auth_item_child:角色-許可權的關聯表;
auth_assignment:使用者-角色的關聯表
2、安裝yii2-admin:composer require mdmsoft/yii2-admin "~2.0"
相關配置: backend\config\main.php
return [
//......
'modules' => [
'admin' => [
'class' => 'mdm\admin\Module',
],
//......
],
'aliases' => [
'@mdm/admin' => '@vendor/mdmsoft/yii2-admin',
],
'components' => [
//......
'authManager' => [
'class' => 'yii\rbac\DbManager',
'defaultRoles' => ['guest'],
],
//......
],
'as access' => [
'class' => 'mdm\admin\components\AccessControl',
'allowActions' => [
//這裡是允許訪問的action,不受許可權控制
//controller/action
]
],
//......
];
現在,我們訪問後臺任何路由都顯示 403 無許可權訪問,為了開發方便,暫時我們先設定所有都可訪問,
'allowActions' => [
//這裡是允許訪問的action,不受許可權控制
//controller/action
'*'
]
下面可以通過瀏覽器訪問如下地址:
/index.php?r=admin
/index.php?r=admin/route
/index.php?r=admin/permission
/index.php?r=admin/role
/index.php?r=admin/assignment
這就是yii2-admin的許可權管理介面了,但是這麼訪問太麻煩,我們可以做一個導航管理,讓有許可權的路由都顯示在左側選單;
3、menu選單實現
首先建立一個menu表,這個表在yii2中已經為我們準備好了,直接資料遷移:yii migrate/to m140602_111327_create_menu_table.php --migrationPath=@mdm/admin/migrations
# m140602_111327_create_menu_table.php 是我們要執行的menu資料表,
# 在vendor\mdmsoft\yii2-admin\migrations目錄下,這個每個人可能是不同的,需要自己手動修改
訪問 /admin/menu 可以看到選單管理介面;然後 開啟佈局檔案left.php,修改相應配置,
<?php
use mdm\admin\components\MenuHelper;
use dmstr\widgets\Menu;
?>
<aside class="main-sidebar">
<section class="sidebar">
<?=
Menu::widget([
'options' => ['class' => 'sidebar-menu', 'data-widget'=> 'tree'],
'items' => MenuHelper::getAssignedMenu(Yii::$app->user->id)
]);
?>
</section>
</aside>
這樣就可以通過在介面操作實現左側導航管理;
4、menu選單使用方法
/admin/menu/index #這裡新增導航選單,之前先訪問 /admin/menu/index將所有路由新增到表中,否則無法設定路由連結
例如:新增一個‘’角色管理‘’ 選單,路由為 “/admin/role”
5、rbac許可權使用方法
//路由設定
/admin/route/index #訪問將左側所有路由新增到右側,即寫入路由資料,這裡的路由是根據php反射機制自動顯示,也可手動增加路由
//許可權設定
/admin/permission/index #新增一個許可權,分配給一個路由,例如:“ 全域性許可權 ”,右側加入 “ /* ”;
//角色設定
/admin/role/index #新增一個角色,分配給該角色一個許可權,例如:“ 超級管理員 ”,右側加入上一步設定的 “ 全域性許可權 ”;
//角色分配
/admin #分配給使用者角色,這裡會顯示user表中所有使用者,例如:“ admin ”,右側加入上一步設定的角色 “ 超級管理員 ”;
6、完善配置
之前為了使用方便我們將 /backend/config/main.php,allowActions 設定為 *,現在改為正確設定:
'as access' => [
'class' => 'mdm\admin\components\AccessControl',
'allowActions' => [
//這裡是允許訪問的action,不受許可權控制
//controller/action
'site/*',
]
],
未在後臺授權的使用者訪問相關路由都會顯示403;