后台菜单注解

优质
小牛编辑
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,后台菜单管理主要是给开发者用的,所以生产环境中会隐藏。

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