Phone: 158 4018 8888 Email: 407593529@qq.com

数据字典

2026-02-25 17:33:18 2

数据字典

需要注意装载器的core\Dict目录和app\Dict目录是不同的

core\Dict 功能主要是具体的字典的调用方法的定义,相当于功能实现
app\Dict 功能主要是各个类型的数据字典的枚举定义,以及通过core\Dict完成对于第三方开发者定义的扩展数据字典的加载

├─niucloud           niucloud-admin框架核心目录
│  ├─core                
│  │  ├─dict
│  │  │  ├─BaseDict                                        数据字典驱动类的基类
│  │  │  ├─DictLoader                                      数据字典装载器  
│  │  │  ├─Event                                           事件字典驱动类
│  │  │  ├─Lang                                            多语言字典驱动类
│  │  │  ├─MemberAccountChangeType                         会员账户变动类型字典驱动类
│  │  │  ├─Menu                                            菜单字典驱动类
│  │  │  ├─Notice                                          消息提醒(模版)字典驱动类
│  │  │  ├─UniappComponent                                 Uniapp端组件字典驱动类              
│  │  │  ├─UniappLink                                      Uniapp端超级链接字典驱动类    
│  │  │  ├─UniappPages                                     Uniapp端页面字典驱动类        

数据字典装载器的功能是动态加载第三方开发者开发的功能插件代码中,定义的数据字典扩展。
数据字典装载器最终实现数据字典扩展与系统内置数据字典的合并。
系统会自动先加载框架内置数据字典(app\dict),然后附加第三方数据字典项。
BaseDict 是所有数据字典的基类,BaseDict 继承自 Storage(配置文件驱动类),其他具体类是BaseDict 的子类实现。各个子类的主要职能是实现自己数据字典的加载(Load方法)

最终,系统会通过字典装载器 DictLoader 完成 各个数据字典的装载。

如在自定义页面中,系统会动态加载第三方开发者定义的页面
代码 app/dict/diy/PageDict.php文件中,有如下代码实现

class PageDict
{

    /**
     * 获取页面类型
     * @param string $type
     * @return array|string
     */
    public static function getPageType($type = '')
    {
        $system_pages = [
            'DIY_INDEX' => [
                'title' => get_lang('dict_diy.page_index'),
                'page' => 'pages/index/index',
            ],
            'DIY_MEMBER_INDEX' => [
                'title' => get_lang('dict_diy.page_member_index'),
                'page' => 'pages/member/index',
            ],
            'DIY_PAGE' => [
                'title' => get_lang('dict_diy.page_diy'),
                'page' => 'pages/index/diy',
            ]
        ];
        $pages = (new DictLoader("UniappPages"))->load($system_pages);
        if (empty($type)) {
            return $pages;
        }
        return $pages[ $type ] ?? '';
    }

}

$pages = (new DictLoader("UniappPages"))->load($system_pages);

通过以上方法完成了具体的数据字典的扩展。
其他数据字典的使用类似。

一般来说,数据字典装载器不需要开发者来定义,只需要知道niucloud-admin框架对这一块的设计就可以了。会按照教程进行具体的业务功能开发就足够了。

选择样式

选择布局
选择颜色
选择背景
选择背景