Fecmall 插件扩展方式,添加后台自定义菜单

技术分享 · Fecmall · 于 3年前 发布 · 1398 次阅读

fecmall支持开发扩展,如果以扩展的形式开发插件,添加后台的菜单,可以参看此文档

fecmall的后台菜单,是有权限的,因此,在添加菜单的同时,还要添加权限资源,以及设置权限组权限,首先您可以下载一下fecyo,然后参看一下里面的例子,下面写一个步骤

首先,在查看下面的内容之前,先打开这个文档看一下大致说明:http://www.fecmall.com/topic/4565

1.添加后台菜单,打开@fecyo/config.php

appadmin配置部分,可以看到后台菜单的配置部分,如果您添加后台菜单,可以在这个数组里面配置添加

'services' => [
    'admin' => [
        'childService' => [
            'menu' => [
                'menuConfig' => [

                ],
            ],
        ],
    ],
],

1.1您可以在这里添加菜单节点,详细可以参看@fecyo/config.php,或者看这个文档里面的例子:http://www.fecmall.com/topic/4565

1.2如果您想要某个fecmall的菜单不显示,可以添加'active' => false,

'sales' => [
    'child' => [
        'newsletter' => [
            'active' => false,
        ],  
	],
],

这个菜单将不会显示。

2.配置资源

菜单url点击后,一般对应的都是列表页,进入后,还需要增删改查操作等操作,fecmall是基于RBAC action的权限控制,因此,需要在后台添加资源,如图:

2.1fecmall后台添加资源:

2.2用户权限组增加权限

2.3刷新缓存

这样就增加好了权限了,然后需要新建相应的controller就可以

3.插件实现自动化,新建权限资源,以及将其加入到权限组

3.1打开 @fecyo/administer/Install.php文件,在函数installDbSql里面可以看到

// 1
        $db->createCommand(
            "INSERT INTO `admin_url_key` (`name`, `tag`, `tag_sort_order`, `url_key`, `created_at`, `updated_at`, `can_delete`) VALUES ('Order Process Audit List', 'sales_order_process', 1, '/sales/orderprocess/audit', 1570013629, 1570013759, 1)"
        )->execute();
        
        $lastInsertId = $db->getLastInsertID() ;
        
        $db->createCommand(
            "INSERT INTO `admin_role_url_key` (`role_id`, `url_key_id`, `created_at`, `updated_at`) VALUES (4, " . $lastInsertId . ", 1567162984, 1567162984)"
        )->execute();
        

第一行sql是新增一个权限资源, 第2行sql是得到这个插入资源的id,第三个sql,是将其加入到默认的admin权限组(默认的admin账户对应的全限制role_id为4)

对于上面的sql的获取:sql最好不要手写,尽量通过fecmall在后台将权限添加,然后去后台表admin_url_key,将数据导出来(phpadmin比较方便),然后最后几行替换即可

譬如导出来的sql

(220, 'Catalog Product AttrGroup', 'catalog_product_info_manager', 22, '/catalog/productinfo/getattrgroupinfo', 1601025890, 1601025890, 2);

'Catalog Product AttrGroup', 'catalog_product_info_manager', 22, '/catalog/productinfo/getattrgroupinfo', 1601025890, 1601025890 替换上面的第一个sql里面的数据部分即可(第2个和第3个不需要懂),替换后的sql为

// 1
        $db->createCommand(
            "INSERT INTO `admin_url_key` (`name`, `tag`, `tag_sort_order`, `url_key`, `created_at`, `updated_at`, `can_delete`) VALUES ('Catalog Product AttrGroup', 'catalog_product_info_manager', 22, '/catalog/productinfo/getattrgroupinfo', 1601025890, 1601025890, 1)"
        )->execute();
        
        $lastInsertId = $db->getLastInsertID() ;
        
        $db->createCommand(
            "INSERT INTO `admin_role_url_key` (`role_id`, `url_key_id`, `created_at`, `updated_at`) VALUES (4, " . $lastInsertId . ", 1567162984, 1567162984)"
        )->execute();
        

3.2对于上面的4个权限资源,您需要搞这么4组sql(增,删,改,查分别是4个url)

3.3插件安装的sql,执行sql,将会添加这些数据,自动新建好权限资源,以及为admin账户新增权限

用户安装插件后,刷新缓存即可。

共收到 1 条回复
Fecmall#13年前 0 个赞

后期优化:安装扩展插件后,直接刷新后台菜单对应的缓存,不需要用户去后台自动刷新缓存/

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics