插件后台菜单

优质
小牛编辑
138浏览
2023-12-01

插件后台菜单

我们可以在插件的后台控制器的方法上添加后台菜单注解@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'  => ''
 * )
 */