什么是后台菜单注解

为了方便在代码里进行后台菜单管理我们新增了@adminMenu@adminMenuRoot两个自定义的注解,通过这个注解我们可以很轻松地在代码中管理后台菜单,比如菜单的名称,排序,是否显示,父级等;@adminMenu是方法级的注解,只对方法有效,每个后台控制器方法只支持一个@adminMenu注解,@adminMenuRoot是类级的注解,只有在给类注释时有效,每个后台控制器类可以支持多个@adminMenuRoot注解

后台菜单入口注解@adminMenuRoot

下面以app\admin\controller\SettingController为例:

  1. <?php
  2. namespace app\admin\controller;
  3. use cmf\controller\AdminBaseController;
  4. use think\Db;
  5. /**
  6. * Class SettingController
  7. * @package app\admin\controller
  8. * @adminMenuRoot(
  9. * 'name' =>'设置',
  10. * 'action' =>'default',
  11. * 'parent' =>'',
  12. * 'display'=> true,
  13. * 'order' => 10000,
  14. * 'icon' =>'cogs',
  15. * 'remark' =>'系统设置入口'
  16. * )
  17. */
  18. class SettingController extends AdminBaseController
  19. {
  20. /**
  21. * 密码修改
  22. * @adminMenu(
  23. * 'name' => '密码修改',
  24. * 'parent' => 'default',
  25. * 'display'=> false,
  26. * 'hasView'=> true,
  27. * 'order' => 10000,
  28. * 'icon' => '',
  29. * 'remark' => '密码修改',
  30. * 'param' => ''
  31. * )
  32. */
  33. public function password()
  34. {
  35. return $this->fetch();
  36. }
  37. }

以上代码中,我们给 SettingController类增加了一个类级别的@adminMenuRoot注解,它的格式就是一个变形 php 数组,语法和 php 数组完全一样,数组里的属性就是这个后台菜单入口的属性,

  1. /**
  2. * @adminMenuRoot(
  3. * 'name' =>'设置', // 菜单名称
  4. * 'action' =>'default', // 菜单操作,这是一个虚拟的控制器操作,它不会在这个控制器有对应的方法
  5. * 'parent' =>'',//菜单父级,格式有三种:应用名/控制器/操作,控制器/操作,操作
  6. * 'display'=> true,//菜单是否显示
  7. * 'order' => 10000,//菜单排序
  8. * 'icon' =>'cogs',//菜单图标
  9. * 'remark' =>'系统设置入口' //菜单备注
  10. * )
  11. */

后台菜单注解@adminMenu

同样以app\admin\controller\SettingController为例:

  1. <?php
  2. namespace app\admin\controller;
  3. use cmf\controller\AdminBaseController;
  4. use think\Db;
  5. /**
  6. * Class SettingController
  7. * @package app\admin\controller
  8. * @adminMenuRoot(
  9. * 'name' =>'设置',
  10. * 'action' =>'default',
  11. * 'parent' =>'',
  12. * 'display'=> true,
  13. * 'order' => 10000,
  14. * 'icon' =>'cogs',
  15. * 'remark' =>'系统设置入口'
  16. * )
  17. */
  18. class SettingController extends AdminBaseController
  19. {
  20. /**
  21. * 密码修改
  22. * @adminMenu(
  23. * 'name' => '密码修改',
  24. * 'parent' => 'default',
  25. * 'display'=> false,
  26. * 'hasView'=> false,
  27. * 'order' => 10000,
  28. * 'icon' => '',
  29. * 'remark' => '密码修改',
  30. * 'param' => ''
  31. * )
  32. */
  33. public function password()
  34. {
  35. return $this->fetch();
  36. }
  37. }

上面的代码中,我们给 password操作增加了一个方法级别的@adminMenu注解,它的格式也是一个变形 php 数组,语法和 php 数组完全一样,数组里的属性就是这个后台菜单的属性,

  1. /**
  2. * @adminMenu(
  3. * 'name' => '密码修改', // 菜单名称
  4. * 'parent' => 'default', //菜单父级,格式有三种:应用名/控制器/操作,控制器/操作,操作
  5. * 'display'=> false, //菜单是否显示
  6. * 'hasView'=> false,//菜单是否有界面
  7. * 'order' => 10000, //菜单排序
  8. * 'icon' => '', //菜单排序
  9. * 'remark' => '密码修改', //菜单备注
  10. * 'param' => '' //菜单额外参数,一般没有
  11. * )
  12. */

导入菜单

 后台菜单注解  - 图1

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

原文: https://www.thinkcmf.com/docs/cmf/后台菜单注解.html