后台菜单注解
优质
小牛编辑
134浏览
2023-12-01
什么是后台菜单注解
为了方便在代码里进行后台菜单管理我们新增了@adminMenu
和@adminMenuRoot
两个自定义的注解,通过这个注解我们可以很轻松地在代码中管理后台菜单,比如菜单的名称,排序,是否显示,父级等;@adminMenu
是方法级的注解,只对方法有效,每个后台控制器方法只支持一个@adminMenu
注解,@adminMenuRoot
是类级的注解,只有在给类注释时有效,每个后台控制器类可以支持多个@adminMenuRoot
注解
后台菜单入口注解@adminMenuRoot
下面以app\admin\controller\SettingController
为例:
<?php
namespace 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
为例:
<?php
namespace 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
,后台菜单管理主要是给开发者用的,所以生产环境中会隐藏。
点上面的导入新菜单
按钮,你在控制器里加的菜单注解就会自动变成后台菜单,你不用改什么菜单就会创建好了!