github 項(xiàng)目安裝流程:
composer?global?require?"fxp/composer-asset-plugin:~1.0.0"
composer?create-project?--prefer-dist?--stability=dev?yiisoft/yii2-app-advanced?www.dh.com
?init 0 yes
composer?require?dmstr/yii2-adminlte-asset?"2.*"
'components'?=>?[?'view'?=>?[?'theme'?=>?[?'pathMap'?=>?[?'@app/views'?=>?'@vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app'?],?],?],?],
'urlManager'?=>?[
//用于表明urlManager是否啟用URL美化功能勋陪,在Yii1.1中稱為path格式URL,
//?Yii2.0中改稱美化献丑。
//?默認(rèn)不啟用顾瞪。但實(shí)際使用中袋倔,特別是產(chǎn)品環(huán)境孤钦,一般都會(huì)啟用暴区。
'enablePrettyUrl'?=>?true,?//?是否啟用嚴(yán)格解析穷遂,如啟用嚴(yán)格解析拣技,要求當(dāng)前請(qǐng)求應(yīng)至少匹配1個(gè)路由規(guī)則千诬,
//?否則認(rèn)為是無效路由。
//?這個(gè)選項(xiàng)僅在?enablePrettyUrl?啟用后才有效膏斤。
'enableStrictParsing'?=>?false,?//?是否在URL中顯示入口腳本徐绑。是對(duì)美化功能的進(jìn)一步補(bǔ)充。
'showScriptName'?=>?false,?//?指定續(xù)接在URL后面的一個(gè)后綴莫辨,如?.html?之類的傲茄。僅在?enablePrettyUrl?啟用時(shí)有效。
'suffix'?=>?'',
'rules'?=>?[
?????"<controller:\w+>/<id:\d+>"=>"<controller>/view",
?????"<controller:\w+>/<action:\w+>"=>"<controller>/<action>"
?????],
],
composerrequiremdmsoft/yii2-admin"~2.0"
return['modules'=> ['admin'=> ['class'=>'mdm\admin\Module','layout'=>'left-menu',//yii2-admin的導(dǎo)航菜單] ... ], ...'components'=> [ ...'authManager'=> ['class'=>'yii\rbac\DbManager',// 使用數(shù)據(jù)庫管理配置文件] ],'as access'=> ['class'=>'mdm\admin\components\AccessControl','allowActions'=> ['site/*',//允許訪問的節(jié)點(diǎn)沮榜,可自行添加'admin/*',//允許所有人訪問admin節(jié)點(diǎn)及其子節(jié)點(diǎn)]?],?];
yii?migrate?--migrationPath=@mdm/admin/migrations
yii?migrate?--migrationPath=@yii/rbac/migrations
1盘榨、安裝yii2
通過windows的'cmd'命令進(jìn)入dos命令窗口,執(zhí)行如下命令
composerglobalrequire"fxp/composer-asset-plugin:~1.0.0"
composercreate-project--prefer-dist--stability=devyiisoft/yii2-app-advancedwww.dh.com
這一步驟執(zhí)行時(shí)間較長蟆融,還可能讓你輸入git用戶名密碼
完成到此已經(jīng)基本安裝完成草巡,下面步驟是初始化
先進(jìn)入你的安裝的項(xiàng)目目錄 找到init腳本
執(zhí)行init腳本
init
選擇開發(fā)環(huán)境
0
是否確定選擇
yes
大功告成
未安裝的請(qǐng)參考yii2史上最簡單式安裝教程,沒有之一
已安裝的請(qǐng)繼續(xù)看下一步操作
2型酥、配置數(shù)據(jù)庫
2.1 配置數(shù)據(jù)庫
修改common/config/main-local.php 實(shí)際項(xiàng)目中本地的數(shù)據(jù)庫往往跟線上數(shù)據(jù)庫不一致山憨,
我們這里配置到main-local.php就可以了,產(chǎn)品上線后弥喉,我們可以使用git或者svn忽略掉main-local.php郁竟,線上直接部署。
我們這里使用的mysql數(shù)據(jù)庫由境,配置如下
當(dāng)然啦棚亩,上面紅圈圈的信息需要你自己手動(dòng)修改掉,要是十分巧合跟我的一樣那就不用在修改了
2.2 創(chuàng)建user數(shù)據(jù)表虏杰,我們后面要實(shí)現(xiàn)后臺(tái)登陸
說明:user表和menu表的創(chuàng)建可以參考我們后面下載的組件yii2-admin里面的sql,具體目錄位于
vendor\mdmsoft\yii2-admin\migrations\schema-mysql.sql
CREATETABLE`user`(
`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'自增ID',
`username`varchar(255)NOTNULLCOMMENT'用戶名',
`auth_key`varchar(32)NOTNULLCOMMENT'自動(dòng)登錄key',
`password_hash`varchar(255)NOTNULLCOMMENT'加密密碼',
`password_reset_token`varchar(255)DEFAULTNULLCOMMENT'重置密碼token',
`email`varchar(255)NOTNULLCOMMENT'郵箱',
`role`smallint(6)NOTNULLDEFAULT'10'COMMENT'角色等級(jí)',
`status`smallint(6)NOTNULLDEFAULT'10'COMMENT'狀態(tài)',
`created_at`int(11)NOTNULLCOMMENT'創(chuàng)建時(shí)間',
`updated_at`int(11)NOTNULLCOMMENT'更新時(shí)間',
PRIMARYKEY(`id`)
)ENGINE=InnoDBAUTO_INCREMENT=0DEFAULTCHARSET=utf8COMMENT='用戶表';
2.3 訪問frontend站點(diǎn)讥蟆,先注冊(cè)個(gè)用戶
注冊(cè)成功后,右上角會(huì)顯示登陸的狀態(tài)嘹屯,我們后面會(huì)用到這個(gè)注冊(cè)的用戶
接下來我們要開始配置后臺(tái)的模板了攻询。
3从撼、利用AdminLTE渲染后臺(tái)模板
后臺(tái)的模板我們采用利用 AdminLTE(Backend theme for Yii2 Framework)
插播一曲:AdminLTE是一個(gè)完全響應(yīng)管理模板州弟【埽基于Bootstrap3框架,易定制模板婆翔。適合多種屏幕分辨率拯杠,從小型移動(dòng)設(shè)備到大型臺(tái)式機(jī)。
內(nèi)置了多個(gè)頁面啃奴,包括儀表盤潭陪、郵箱、日歷最蕾、鎖屏依溯、登錄及注冊(cè)、404錯(cuò)誤瘟则、500錯(cuò)誤等頁面黎炉。
3.1 安裝AdminLTE
https://github.com/dmstr/yii2-adminlte-asset
打開上面的鏈接,按照操作步驟進(jìn)行安裝
這里我簡述下自己的安裝步驟醋拧,cd advanced后慷嗜,
因?yàn)槭莔ac,這里直接composer進(jìn)行安裝就行了
composerrequiredmstr/yii2-adminlte-asset"2.*"
安裝成功后丹壕,vendor目錄下會(huì)多幾個(gè)文件夾庆械,如下
3.2 yii2配置整合AdminLTE,搭建帥氣上檔次的后臺(tái)
下面我們配置下backend/config/main.php先預(yù)覽下效果,小心臟捉急的巴不得趕緊嘗嘗戰(zhàn)果
'components'=> [
'view'=> [
'theme'=> [
'pathMap'=> [
'@app/views'=>'@vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app'
],
],
],
],
nice,頁面瞬間好看多了菌赖。
問題來了缭乘,我們是在components里面單獨(dú)配置的theme,這樣以后要修改布局文件什么的是很不方便滴,下面我們把不局文件拷貝下來覆蓋掉yii自帶的layout.
把vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app目錄下的layouts和site拷貝?
覆蓋掉backend/views/目錄下的lauouts和site對(duì)應(yīng)的文件
覆蓋后記得屏蔽掉 components下面view的配置項(xiàng)
到此盏袄,后臺(tái)模板的搭建告一段落忿峻,si不si很happy
4、下面我們用yii的rbac實(shí)現(xiàn)后臺(tái)的權(quán)限控制
4.1 我們先配置下簡短路由
backend/config/main.php文件的compontents加上下面的配置
'urlManager'=> [
//用于表明urlManager是否啟用URL美化功能辕羽,在Yii1.1中稱為path格式URL逛尚,
// Yii2.0中改稱美化。
// 默認(rèn)不啟用刁愿。但實(shí)際使用中绰寞,特別是產(chǎn)品環(huán)境,一般都會(huì)啟用铣口。
'enablePrettyUrl'=>true,
// 是否啟用嚴(yán)格解析滤钱,如啟用嚴(yán)格解析,要求當(dāng)前請(qǐng)求應(yīng)至少匹配1個(gè)路由規(guī)則脑题,
// 否則認(rèn)為是無效路由件缸。
// 這個(gè)選項(xiàng)僅在 enablePrettyUrl 啟用后才有效。
'enableStrictParsing'=>false,
// 是否在URL中顯示入口腳本叔遂。是對(duì)美化功能的進(jìn)一步補(bǔ)充他炊。
'showScriptName'=>false,
// 指定續(xù)接在URL后面的一個(gè)后綴争剿,如 .html 之類的。僅在 enablePrettyUrl 啟用時(shí)有效痊末。
'suffix'=>'',
'rules'=> [
"<controller:\w+>/<id:\d+>"=>"<controller>/view",
"<controller:\w+>/<action:\w+>"=>"<controller>/<action>"
],
],
接下來在項(xiàng)目的根目錄 backend/web下面創(chuàng)建.htaccess文件并添加如下內(nèi)容蚕苇,這個(gè)文件你都創(chuàng)建不下來,看來是真需要再磨練磨練哦
Options+FollowSymLinks
IndexIgnore*/*
RewriteEngineon
# if a directory or a file exists, use it directlyRewriteCond%{REQUEST_FILENAME}!-f
RewriteCond%{REQUEST_FILENAME}!-d
# otherwise forward it to index.phpRewriteRule. index.php
當(dāng)然凿叠,你的apache必須要開啟rewrite模塊涩笤。
下面我們?cè)L問下gii模塊測試下
http://localhost/advanced/backend/web/gii
校驗(yàn)是可以的。
4.2 創(chuàng)建權(quán)限控制所需要的數(shù)據(jù)表
1盒件、安裝yii2
未安裝的請(qǐng)參考yii2史上最簡單式安裝教程蹬碧,沒有之一?或者參考yii2實(shí)戰(zhàn)教程之詳細(xì)安裝步驟
已安裝的請(qǐng)繼續(xù)看下一步操作
2、配置數(shù)據(jù)庫
2.1 配置數(shù)據(jù)
修改common/config/main-local.php的配置
以mysql為例
圖中的host炒刁、dbname锰茉、username和password要相應(yīng)的改為你自己的。
2.2 創(chuàng)建user數(shù)據(jù)表切心,我們后面要實(shí)現(xiàn)后臺(tái)登陸
說明:user表和menu表的創(chuàng)建可以參考我們后面下載的組件yii2-admin里面的sql,具體目錄位于
vendor\mdmsoft\yii2-admin\migrations\schema-mysql.sql
CREATETABLE`user`(
`id`int(11)NOTNULLAUTO_INCREMENT COMMENT"自增ID",
`username`varchar(255)NOTNULLCOMMENT"用戶名",
`auth_key`varchar(32)NOTNULLCOMMENT"自動(dòng)登錄key",
`password_hash`varchar(255)NOTNULLCOMMENT"加密密碼",
`password_reset_token`varchar(255)DEFAULTNULLCOMMENT"重置密碼token",
`email`varchar(255)NOTNULLCOMMENT"郵箱",
`role`smallint(6)NOTNULLDEFAULT"10"COMMENT"角色等級(jí)",
`status`smallint(6)NOTNULLDEFAULT"10"COMMENT"狀態(tài)",
`created_at`int(11)NOTNULLCOMMENT"創(chuàng)建時(shí)間",
`updated_at`int(11)NOTNULLCOMMENT"更新時(shí)間",
PRIMARYKEY(`id`)
)ENGINE=InnoDBAUTO_INCREMENT=0DEFAULTCHARSET=utf8 COMMENT="用戶表";
2.3 訪問frontend站點(diǎn)飒筑,先注冊(cè)個(gè)用戶
注冊(cè)成功后,右上角會(huì)顯示登陸的狀態(tài)绽昏,我們后面會(huì)用到這個(gè)注冊(cè)的用戶
接下來我們要開始配置后臺(tái)的模板了协屡。
3、利用AdminLTE渲染后臺(tái)模板
后臺(tái)的模板我們采用利用?AdminLTE(Backend theme for Yii2 Framework)
插播一曲:AdminLTE是一個(gè)完全響應(yīng)管理模板全谤》粝基于Bootstrap3框架,易定制模板认然。適合多種屏幕分辨率补憾,從小型移動(dòng)設(shè)備到大型臺(tái)式機(jī)。
內(nèi)置了多個(gè)頁面卷员,包括儀表盤盈匾、郵箱、日歷毕骡、鎖屏削饵、登錄及注冊(cè)、404錯(cuò)誤未巫、500錯(cuò)誤等頁面窿撬。
3.1 安裝AdminLTE
https://github.com/dmstr/yii2-adminlte-asset
打開上面的鏈接,按照操作步驟進(jìn)行安裝
這里我簡述下自己的安裝步驟叙凡,cd advanced后劈伴,
composerrequiredmstr/yii2-adminlte-asset"2.*"
composer無法安裝的,請(qǐng)移步這里
3.2 利用AdminLTE的demo模板,搭建帥氣上檔次的管理后臺(tái)
拷貝 vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app 目錄下的layouts和site目錄以及文件
覆蓋掉backend/views/目錄下的lauouts和site對(duì)應(yīng)的文件
刷新下后臺(tái)的界面握爷,是不是有一種很happy的feel~
4跛璧、完善rbac權(quán)限管理
4.1 配置簡短路由
backend/config/main.php文件的compontents加上下面的配置
"urlManager"=> [
//用于表明urlManager是否啟用URL美化功能苏遥,在Yii1.1中稱為path格式URL,
// Yii2.0中改稱美化赡模。
// 默認(rèn)不啟用。但實(shí)際使用中师抄,特別是產(chǎn)品環(huán)境漓柑,一般都會(huì)啟用。
"enablePrettyUrl"=>true,
// 是否啟用嚴(yán)格解析叨吮,如啟用嚴(yán)格解析辆布,要求當(dāng)前請(qǐng)求應(yīng)至少匹配1個(gè)路由規(guī)則,
// 否則認(rèn)為是無效路由茶鉴。
// 這個(gè)選項(xiàng)僅在 enablePrettyUrl 啟用后才有效锋玲。
"enableStrictParsing"=>false,
// 是否在URL中顯示入口腳本。是對(duì)美化功能的進(jìn)一步補(bǔ)充涵叮。
"showScriptName"=>false,
// 指定續(xù)接在URL后面的一個(gè)后綴惭蹂,如 .html 之類的。僅在 enablePrettyUrl 啟用時(shí)有效割粮。
"suffix"=>"",
"rules"=> [
"<controller:\w+>/<id:\d+>"=>"<controller>/view",
"<controller:\w+>/<action:\w+>"=>"<controller>/<action>"
],
],
4.2 配置web server
如果你用apache作為你的web服務(wù)器盾碗,可以參考下面的配置
在應(yīng)用的目錄 backend/web下面創(chuàng)建.htaccess文件并添加如下內(nèi)容,這個(gè)文件你都創(chuàng)建不下來舀瓢,看來是真需要再磨練磨練哦
Options+FollowSymLinks
IndexIgnore*/*
RewriteEngineon# if a directory or a file exists, use it directlyRewriteCond%{REQUEST_FILENAME}!-f
RewriteCond%{REQUEST_FILENAME}!-d
# otherwise forward it to index.phpRewriteRule. index.php
當(dāng)然廷雅,前提是你的apache必須要開啟rewrite模塊。
nginx用戶京髓,修改你的server段航缀,參考如下
server{
listen80;
server_nameyourdomain;
root/var/www/yourdirectory/backend/web;
indexindex.php index.html;
charsetutf-8;
location/ {
try_files$uri$uri/ /index.php$is_args$args;
}
location~ \.php${
fastcgi_pass127.0.0.1:9000;
fastcgi_indexindex.php;
fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;
includefastcgi_params;
}
}
配置好了記得重啟你的web server哦,我們校驗(yàn)下“隱藏index.php”的配置是否正確
http://localhost/advanced/backend/web/gii
可以正常打開即沒問題堰怨。
4.3 創(chuàng)建權(quán)限控制所需要的數(shù)據(jù)表
默認(rèn)yii2都給我們準(zhǔn)備好了芥玉,打開 vendor/yiisoft/yii2/rbac/migrations/schema-mysql.sql 文件,依次創(chuàng)建數(shù)據(jù)表
提示一下备图,手動(dòng)創(chuàng)建數(shù)據(jù)表的時(shí)候不要光顧著復(fù)制粘貼飞傀,要指定charset和engine.如果你用migrate創(chuàng)建那就不說什么了。
`auth_assignment`;
`auth_item_child`;
`auth_item`;
`auth_rule`;
另外補(bǔ)充菜單menu表诬烹,需要的自行創(chuàng)建
說明:user表和menu表的創(chuàng)建可以參考 vendor\mdmsoft\yii2-admin\migrations\schema-mysql.sql
CREATETABLE`menu`(
`id`int(11)NOTNULLAUTO_INCREMENT,
`name`varchar(128)NOTNULL,
`parent`int(11)DEFAULTNULL,
`route`varchar(256)DEFAULTNULL,
`order`int(11)DEFAULTNULL,
`data`text,
PRIMARYKEY(`id`),
KEY`parent`(`parent`),
CONSTRAINT`menu_ibfk_1`FOREIGNKEY(`parent`)REFERENCES`menu`(`id`)ONDELETESETNULLONUPDATECASCADE
)ENGINE=InnoDBDEFAULTCHARSET=utf8
4.4 下載安裝 yii2-admin
參考?https://github.com/mdmsoft/yii2-admin
按照步驟一步一步安裝即可砸烦,同adminlte的安裝
安裝好了可以在 vendor 目錄下看到 mdmsoft 目錄
4.5 權(quán)限配置
打開backend/config/main.php 修改配置
"modules"=> [
"admin"=> [
"class"=>"mdm\admin\Module",
],
],
"aliases"=> [
"@mdm/admin"=>"@vendor/mdmsoft/yii2-admin",
],
//這里必須添加authManager配置項(xiàng)"components"=> [
...
//components數(shù)組中加入authManager組件,有PhpManager和DbManager兩種方式,
//PhpManager將權(quán)限關(guān)系保存在文件里,這里使用的是DbManager方式,將權(quán)限關(guān)系保存在數(shù)據(jù)庫.
"authManager"=> [
"class"=>'yii\rbac\DbManager',//這里記得用單引號(hào)而不是雙引號(hào)
"defaultRoles"=> ["guest"],
],
...
],
//嚴(yán)重警告!=视酢幢痘!as access位置不要添加錯(cuò)了,已經(jīng)不少同學(xué)都掉坑里了<移啤Q账怠购岗!'as access'=> [
'class'=>'mdm\admin\components\AccessControl',
'allowActions'=> [
//這里是允許訪問的action
//controller/action
]
],
友好提示:請(qǐng)額外花10秒鐘檢查下你的as access配置,因?yàn)楹芏嗳硕寂渲玫搅薱omponents里门粪,這是錯(cuò)誤的喊积。
4.5 校驗(yàn)權(quán)限模塊是否有效
如果此時(shí)你不小心刷新了頁面你會(huì)發(fā)現(xiàn),不管你訪問什么頁面玄妈,都會(huì)提示你403了乾吻,也就是沒權(quán)限進(jìn)行操作了!
也就證明了我們權(quán)限添加是正確的拟蜻。但是绎签,如此一來我們也就不方便往下進(jìn)行了。為了繼續(xù)酝锅,我們先屏蔽掉權(quán)限诡必,也就是先讓權(quán)限失效,只需要配置as access中允許所有操作都可以訪問即可搔扁。
'as access'=> [
'class'=>'mdm\admin\components\AccessControl',
'allowActions'=> [
//這里是允許訪問的action
'*'
]
],
需要提醒你的是爸舒,我們后面對(duì)權(quán)限完善了以后,記得把*改回來稿蹲!
現(xiàn)在我們?cè)偻ㄟ^路由訪問我們剛剛添加好的權(quán)限模塊 http://localhost/advanced/backend/web/admin/route
嗯碳抄,界面是有的了,下面我們加快腳步驗(yàn)收下我們的權(quán)限這塊到底成還是不成呢场绿?
一般來說到這一步就ok的了剖效。后面的可以自己摸索著添加路由分配權(quán)限了。
下面我們?cè)谧髠?cè)菜單上把權(quán)限的欄目加上,代碼可直接復(fù)制焰盗,放置于 <section class="sidebar"></section>標(biāo)簽內(nèi)即可
<ul?class="sidebar-menu">? ? ? ? ? ?
? ?<li?class="treeview">? ? ? ? ? ? ? ?
? ? ? ?<a?href="#">? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ?<i?class="fa?fa-gears"></i>?<span>權(quán)限控制</span>? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ?<i?class="fa?fa-angle-left?pull-right"></i>? ? ? ? ? ? ? ?
? ? ? ?</a>? ? ? ? ? ? ? ?
? ? ? ?<ul?class="treeview-menu">? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ?<li?class="treeview">? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?<a?href="/admin">管理員</a>? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?<ul?class="treeview-menu">? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?<li><a?href="/user"><i?class="fa?fa-circle-o"></i>?后臺(tái)用戶</a></li>? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?<li?class="treeview">? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ?<a?href="/admin/role">? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ?<i?class="fa?fa-circle-o"></i>?權(quán)限?<i?class="fa?fa-angle-left?pull-right"></i>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ?</a>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ?<ul?class="treeview-menu">? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ?<li><a?href="/admin/route"><i?class="fa?fa-circle-o"></i>?路由</a></li>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ?<li><a?href="/admin/permission"><i?class="fa?fa-circle-o"></i>?權(quán)限</a></li>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ?<li><a?href="/admin/role"><i?class="fa?fa-circle-o"></i>?角色</a></li>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ?<li><a?href="/admin/assignment"><i?class="fa?fa-circle-o"></i>?分配</a></li>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ?<li><a?href="/admin/menu"><i?class="fa?fa-circle-o"></i>?菜單</a></li>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ?</ul>? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?</li>? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?</ul>? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ?</li>? ? ? ? ? ? ? ?
? ? ? ?</ul>? ? ? ? ? ?
? ?</li>? ? ? ?
</ul>
我們看下效果圖璧尸,這樣一來,我們對(duì)權(quán)限進(jìn)行操作就十分的方便了
如此熬拒,我們的權(quán)限控制基本告一段落了爷光,關(guān)于權(quán)限需要說明的是:
你應(yīng)該先添加路由,然后添加權(quán)限名稱澎粟,后再對(duì)角色或個(gè)人進(jìn)行權(quán)限的獨(dú)立分配蛀序。這一點(diǎn)還請(qǐng)新手謹(jǐn)記!
rbac具體的操作步驟可以參考這里?yii2 rbac權(quán)限控制詳細(xì)操作步驟活烙,如果你是新手或者第一次使用yii2-admin徐裸,我還是非常建議你看看該操作步驟,以便熟悉整個(gè)操作環(huán)節(jié)啸盏。
5重贺、如何利用menu對(duì)菜單進(jìn)行控制?
4.5步驟中我們是直接寫ul li的方式對(duì)左側(cè)菜單進(jìn)行操作的,這樣也是能夠?qū)崿F(xiàn)通過菜單對(duì)權(quán)限進(jìn)行控制滴气笙。但是喃次企,一來不方便操作,而來增加修改個(gè)什么東東都得需要我們?nèi)バ薷某绦驅(qū)崿F(xiàn)潜圃,這也TTM不方便了缸棵。還好我們家有妙招,DDV殺殺殺谭期。
好了堵第,又扯遠(yuǎn)了。仔細(xì)回想崇堵,是不是我們創(chuàng)建的123456張表還有一張menu表沒有利用到喃?這貨怎么利用喃客燕?來鸳劳,我們回歸正題。
首選也搓,我們?cè)L問/admin/menu/index添加幾個(gè)一級(jí)菜單赏廓,姑且叫做一級(jí)1,一級(jí)2傍妒,一級(jí)3吧幔摸,哦對(duì)了,忘記添加路由了颤练,怎么回事呢既忆,我們先訪問/admin/route/index 把左側(cè)的路由移動(dòng)到右側(cè),不然上面創(chuàng)建新菜單會(huì)失敗哦嗦玖。創(chuàng)建菜單時(shí)患雇,[映射][數(shù)據(jù)]我們暫且不填寫。(其具體含義我們會(huì)在菜單一文中進(jìn)行詳細(xì)描述)
添加完畢之后呢宇挫,我們打開布局文件left.php,use兩個(gè)類文件苛吱,分別是yii\bootstrap\Nav和mdm\admin\components\MenuHelper;
獲取權(quán)限的操作 MenuHelper::getAssignedMenu都幫我們做好了。
ok,我們刪掉4.5添加的sidebar-menu菜單器瘪,添加下面的代碼試試看
echoNav::widget(
[
"encodeLabels"=>false,
"options"=> ["class"=>"sidebar-menu"],
"items"=> MenuHelper::getAssignedMenu(Yii::$app->user->id),
]
);
現(xiàn)在菜單控制權(quán)限我們基本上是ok了翠储,現(xiàn)在你可以繼續(xù)添加菜單試試效果如何。
到此呢橡疼,我們的后臺(tái)和rbac的權(quán)限控制可以說是做得非常完美了援所。但是,此篇文章僅僅是搭建后臺(tái)的第一步欣除,篇幅有限再加上說多了各位分不清重難點(diǎn)任斋,相關(guān)的幾篇系列文章,還請(qǐng)耐心的花點(diǎn)時(shí)間繼續(xù)看下去!