## 什么是后臺菜單注解
為了方便在代碼里進行后臺菜單管理我們新增了`@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`,后臺菜單管理主要是給開發者用的,所以生產環境中會隱藏。

點上面的`導入新菜單`按鈕,你在控制器里加的菜單注解就會自動變成后臺菜單,你不用改什么菜單就會創建好了!
- 序言
- 基礎
- 主要特性
- 安裝ThinkCMF
- 為了更爽
- 目錄結構
- 入口文件
- 第三方庫
- 開發規范
- 數據庫規范
- 調試模式
- URL訪問
- 應用
- 配置
- 路由
- 控制器
- 控制器定義
- 控制器模板賦值
- 控制器模板渲染
- 前臺控制器
- 前臺用戶控制器
- 后臺控制器
- 跳轉,AJAX返回和重定向
- URL生成
- 請求
- 請求信息
- 輸入變量
- 請求類型
- 獲取請求頭信息
- 偽靜態
- 更多
- 系統函數
- cmf_auth_check 用戶權限檢查
- cmf_check_user_action 用戶訪問控制
- cmf_check_verification_code 數字驗證碼檢查
- cmf_clear_verification_code 清除數字驗證碼
- cmf_compare_password 用戶密碼比較
- cmf_current_lang 判斷當前語言包
- cmf_get_admin_style 獲取后臺風格
- cmf_get_content_images 獲取HTML圖片
- cmf_get_current_admin_id 登錄管理員ID
- cmf_get_current_user 獲取登錄用戶信息
- cmf_get_current_user_id 登錄用戶ID
- cmf_get_file_download_url 獲取文件下載鏈接
- cmf_get_file_extension 獲取文件擴展名
- cmf_get_image_url 獲取圖片 URL
- cmf_get_option 獲取系統配置
- cmf_get_plugin_class 獲取插件類名
- cmf_get_root 網站根目錄
- cmf_get_site_info 獲取網站信息
- cmf_get_user_avatar_url 獲取用戶頭像URL
- cmf_get_verification_code 生成數字驗證碼
- cmf_is_mobile 判斷是否為手機
- cmf_is_user_login 判斷用戶是否登錄
- cmf_is_wechat 判斷是否為微信
- cmf_password 密碼加密
- cmf_plugin_url 插件URL生成
- cmf_replace_content_file_url 替換編輯器文件地址
- cmf_send_email 發送郵件
- cmf_set_dynamic_config 設置動態配置
- cmf_set_option 設置系統配置
- cmf_split_sql 切分SQL文件
- cmf_update_current_user 更新當前用戶信息
- cmf_url_encode 生成base64的url
- cmf_verification_code_log 驗證碼發送日志
- get_client_ip 獲取客戶端IP地址
- hook 添加鉤子
- cmf_check_mobile 檢查手機號
- cmf_is_android 判斷是否為安卓手機
- cmf_is_ios 判斷是否為ios訪問
- cmf_is_iphone 判斷是否為iphone訪問
- cmf_is_ipad 判斷是否為ipad訪問
- 數據庫
- 數據庫配置
- 添加數據
- 更新數據
- 查詢數據
- 刪除數據
- 事務操作
- 更多數據庫操作
- 模型
- 模型定義
- 添加數據
- 更新數據
- 查詢數據
- 刪除數據
- 數據驗證
- 應用
- 應用的概念
- 應用開發流程
- 導航共享
- 幾個重要基類
- 后臺菜單注解
- 用戶操作配置
- URL 規則配置
- 模板
- 模板常量
- 模板標簽
- 變量輸出
- 系統變量
- 請求參數
- 使用函數
- 使用默認值
- 使用運算符
- 三元運算
- 原樣輸出
- 模板注釋
- 模板目錄
- 包含文件
- 模板布局
- 模板繼承
- 網站信息
- 內置標簽
- 循環輸出標簽
- 比較標簽
- 條件判斷
- 標簽嵌套
- 原生PHP
- 定義標簽
- CMF標簽
- 導航標簽
- 子導航標簽
- 驗證碼標簽
- 幻燈片標簽
- 鉤子標簽
- 友情鏈接標簽
- 分頁標簽
- 傻瓜式模板
- 什么是傻瓜式模板
- 模板描述文件
- 模板文件配置
- 模板變量類型
- 模板變量數據源
- 導航模板數據源
- 導航菜單模板數據源
- 幻燈片模板數據源
- 模板切換
- 插件
- 插件鉤子
- 前臺模板鉤子
- 核心鉤子
- send_mobile_verification_code
- comment
- guestbook
- admin_dashboard
- switch_theme
- admin_login
- admin_init
- home_init
- 插件類主文件
- 插件開發流程
- 插件配置
- 插件控制器
- 插件后臺管理控制器
- 插件后臺菜單
- 插件視圖
- 插件數據庫模型
- 插件多語言
- 插件API控制器
- 前端
- Wind.js
- 前端組件
- js-ajax-form
- js-ajax-delete
- js-ajax-dialog-btn
- js-count-btn
- js-date
- js-datetime
- js-bootstrap-date
- js-bootstrap-datetime
- 專題
- 緩存
- Session
- Cookie
- 分頁
- 驗證碼
- 文件上傳
- 第三方擴展
- 門戶應用
- 模板目錄結構
- 模板開發
- 模板標簽
- 加載標簽庫
- 文章列表標簽
- 面包屑標簽
- 文章分類標簽
- 所有子分類標簽
- 子分類標簽
- 標簽文章列表標簽
- 門戶模板數據源
- 文章分類模板數據源
- 頁面模板數據源
- 附錄
- 升級日志
- 升級指導