多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 插件后台菜单 我们可以在插件的后台控制器的方法上添加后台菜单注解`@adminMenu`,以实现插件后台菜单的添加。 那么什么是后台菜单注解? ## 后台菜单注解`@adminMenu`,`@adminMenuRoot` 同样以Demo 插件的`AdminIndexController`为例: ~~~ <?php // +---------------------------------------------------------------------- // | ThinkCMF [ WE CAN DO IT MORE SIMPLE ] // +---------------------------------------------------------------------- // | Copyright (c) 2013-2014 http://www.thinkcmf.com All rights reserved. // +---------------------------------------------------------------------- // | Author: Dean <zxxjjforever@163.com> // +---------------------------------------------------------------------- namespace plugins\demo\controller; //Demo插件英文名,改成你的插件英文就行了 use cmf\controller\PluginAdminBaseController; use think\Db; /** * Class AdminIndexController * @package plugins\demo\controller * @adminMenuRoot( * 'name' =>'演示插件', * 'action' =>'default', * 'parent' =>'', * 'display'=> true, * 'order' => 0, * 'icon' =>'dashboard', * 'remark' =>'系统设置入口' * ) */ class AdminIndexController extends PluginAdminBaseController { protected function initialize() { parent::initialize(); $adminId = cmf_get_current_admin_id();//获取后台管理员id,可判断是否登录 if (!empty($adminId)) { $this->assign("admin_id", $adminId); } } /** * 演示插件用户列表 * @adminMenu( * 'name' => '演示插件用户列表', * 'parent' => 'default', * 'display'=> true, * 'hasView'=> true, * 'order' => 10000, * 'icon' => '', * 'remark' => '演示插件用户列表', * 'param' => '' * ) */ public function index() { // $result = $this->validate([], 'Demo'); // if ($result !== true) { // $this->error($result); // } $users = Db::name("user")->limit(0, 5)->select(); //$demos = PluginDemoModel::all(); // print_r($demos); $this->assign("users", $users); $this->assign("users", $users); return $this->fetch('/admin_index'); } /** * 演示插件设置 * @adminMenu( * 'name' => '演示插件设置', * 'parent' => 'index', * 'display'=> false, * 'hasView'=> true, * 'order' => 10000, * 'icon' => '', * 'remark' => '演示插件设置', * 'param' => '' * ) */ public function setting() { $users = Db::name("user")->limit(0, 5)->select(); //$demos = PluginDemoModel::all(); // print_r($demos); $this->assign("users", $users); $this->assign("users", $users); return $this->fetch('/admin_index'); } } ~~~ 上面的代码中,我们给 `AdminIndexController`类增加了一个类级别的`@adminMenuRoot`注解,它的格式也是一个变形 php 数组,语法和 php 数组完全一样,数组里的属性就是这个后台菜单的属性, ``` /** * Class AdminIndexController * @package plugins\demo\controller * @adminMenuRoot( * 'name' =>'演示插件', * 'action' =>'default', * 'parent' =>'', * 'display'=> true, * 'order' => 0, * 'icon' =>'dashboard', * 'remark' =>'演示插件入口' * ) */ ``` 上面的代码中,我们也给 `index`操作增加了一个方法级别的`@adminMenu`注解,它的格式也是一个变形 php 数组,语法和 php 数组完全一样,数组里的属性就是这个后台菜单的属性, ``` /** * 演示插件 * @adminMenu( * 'name' => '演示插件', * 'parent' => 'admin/Plugin/default',//菜单父级,格式有三种:应用名/控制器/操作,控制器/操作,操作 * 'display'=> true, * 'hasView'=> true, * 'order' => 10000, * 'icon' => '', * 'remark' => '演示插件', * 'param' => '' * ) */ ```