## 什么是后台菜单注解
为了方便在代码里进行后台菜单管理我们新增了`@adminMenu`和`@adminMenuRoot`两个自定义的注解,通过这个注解我们可以很轻松地在代码中管理后台菜单,比如菜单的名称,排序,是否显示,父级等;`@adminMenu`是方法级的注解,只对方法有效,每个后台控制器方法只支持一个`@adminMenu`注解,`@adminMenuRoot`是类级的注解,只有在给类注释时有效,每个后台控制器类可以支持多个`@adminMenuRoot`注解
## 后台菜单入口注解`@adminMenuRoot`
下面以`app\admin\controller\SettingController`为例:
```php
<?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
<?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`,后台菜单管理主要是给开发者用的,所以生产环境中会隐藏。
![](images/screenshot_1511967298069.png)
点上面的`导入新菜单`按钮,你在控制器里加的菜单注解就会自动变成后台菜单,你不用改什么菜单就会创建好了!
- 序言
- 运行环境
- nginx rewrite
- apache rewrite
- IIS rewrite
- MAC开发
- HTTPS配置
- 更安全的nginx配置
- 关闭调试模式
- 6.0调试模式
- 开发工具
- 邮箱配置
- 163邮箱配置
- QQ邮箱配置
- 安装门户应用
- 5.1及以前版本安装
- 验证码问题
- 迁移到正式环境
- 支持虚拟机
- 5.0支持虚拟机
- 5.1支持虚拟机
- 如何保证代码同时兼容5.1和6.0
- 站群部署
- 部署原理
- 如何使用CMF做商业软件
- 商业化使用概述
- 去除界面上的ThinkCMF
- 更改前后台默认模板
- 定制安装应用
- 让应用自动安装
- 更改默认核心的逻辑
- 忘记后台密码
- 后台地址是?
- 插件安装
- 模板安装
- 更换后台主题
- 关闭数字验证码
- 获取前台用户信息
- 获取当前管理员
- 引入第三方库
- 分页参数丢失
- 什么是数据集?
- 基类你理解了吗?
- 你的后台菜单管理正确吗?
- 安装API模块
- 持续升级
- 面包屑为什么空?
- composer库管理
- 提升网站速度
- 七牛云
- 七牛云插件配置
- 原图保护
- 七牛图片处理
- 防止百度移动端转码