后台菜单注解
什么是后台菜单注解
为了方便在代码里进行后台菜单管理我们新增了@adminMenu和@adminMenuRoot两个自定义的注解,通过这个注解我们可以很轻松地在代码中管理后台菜单,比如菜单的名称,排序,是否显示,父级等;@adminMenu是方法级的注解,只对方法有效,每个后台控制器方法只支持一个@adminMenu注解,@adminMenuRoot是类级的注解,只有在给类注释时有效,每个后台控制器类可以支持多个@adminMenuRoot注解
后台菜单入口注解@adminMenuRoot
下面以app\admin\controller\SettingController为例:
<?phpnamespace app\admin\controller;use cmf\controller\AdminBaseController;use think\Db;/*** Class SettingController* @package app\admin\controller* @adminMenuRoot(* 'name' =>'设置',* 'action' =>'default',* 'parent' =>'',* 'display'=> true,* 'order' => 10000,* 'icon' =>'cogs',* 'remark' =>'系统设置入口'* )*/class SettingController extends AdminBaseController{/*** 密码修改* @adminMenu(* 'name' => '密码修改',* 'parent' => 'default',* 'display'=> false,* 'hasView'=> true,* 'order' => 10000,* 'icon' => '',* 'remark' => '密码修改',* 'param' => ''* )*/public function password(){return $this->fetch();}}
以上代码中,我们给SettingController类增加了一个类级别的@adminMenuRoot注解,它的格式就是一个变形的php数组,语法和 php数组完全一样,数组里的属性就是这个后台菜单入口的属性,
/*** @adminMenuRoot(* 'name' =>'设置', // 菜单名称* 'action' =>'default', // 菜单操作,这是一个虚拟的控制器操作,它不会在这个控制器有对应的方法* 'parent' =>'',//菜单父级,格式有三种:应用名/控制器/操作,控制器/操作,操作* 'display'=> true,//菜单是否显示* 'order' => 10000,//菜单排序* 'icon' =>'cogs',//菜单图标* 'remark' =>'系统设置入口' //菜单备注* )*/
后台菜单注解@adminMenu
同样以app\admin\controller\SettingController为例:
<?phpnamespace app\admin\controller;use cmf\controller\AdminBaseController;use think\Db;/*** Class SettingController* @package app\admin\controller* @adminMenuRoot(* 'name' =>'设置',* 'action' =>'default',* 'parent' =>'',* 'display'=> true,* 'order' => 10000,* 'icon' =>'cogs',* 'remark' =>'系统设置入口'* )*/class SettingController extends AdminBaseController{/*** 密码修改* @adminMenu(* 'name' => '密码修改',* 'parent' => 'default',* 'display'=> false,* 'hasView'=> false,* 'order' => 10000,* 'icon' => '',* 'remark' => '密码修改',* 'param' => ''* )*/public function password(){return $this->fetch();}}
上面的代码中,我们给password操作增加了一个方法级别的@adminMenu注解,它的格式也是一个变形 php 数组,语法和 php 数组完全一样,数组里的属性就是这个后台菜单的属性,
/*** @adminMenu(* 'name' => '密码修改', // 菜单名称* 'parent' => 'default', //菜单父级,格式有三种:应用名/控制器/操作,控制器/操作,操作* 'display'=> false, //菜单是否显示* 'hasView'=> false,//菜单是否有界面* 'order' => 10000, //菜单排序* 'icon' => '', //菜单排序* 'remark' => '密码修改', //菜单备注* 'param' => '' //菜单额外参数,一般没有* )*/
导入菜单
快捷方式中的菜单管理只在调试模式下才会显示,如果生产环境中要进行后台菜单管理,可以访问:
你的域名/admin/menu/index,后台菜单管理主要是给开发者用的,所以生产环境中会隐藏。

点上面的导入新菜单按钮,你在控制器里加的菜单注解就会自动变成后台菜单,你不用改什么菜单就会创建好了!
