- 🏠 简介
- 📥 源码下载
- 🚀 安装指南
- 🔧 niucloud (服务端)
- 🖥️ admin (后台管理端)
- 📱 uni-app(手机端前端)
- 🌐 web端(PC前端)
- ⚙️ 代码生成器
- ⚙️ 配置手册
- 📚 使用手册
- 🔄 版本更新
-
❓ 常见问题
- 服务器问题
- 安装问题
- 使用问题
- 版本问题
-
其他问题
- 怎么添加菜单,添加了菜单不出现怎么回事
- 站点site端(租户端、商家端)和saas管理端(平台端)究竟啥意思,有啥区别
- 框架中是有订单表order,假如开发一个商城插件,请问商城的订单数据是不是重新搞一个订单表shop_order
- 有些支付平台是绑定回调唯一网址或目录,如果有几个开发者开发插件都有支付那这块怎么解决?
- 站点过期,可以登录,这样对吗?
- 计划任务怎么启动啊
- Git多分支开发,切换分支
- 安装应用出现is_dir()报错处理方案
- 绑定授权时出现“请求来源产品与授权产品不一致”解决方案
- “未找到admin源码所在目录”的解决方案
- 页面装修本地开发环境配置
- 接口请求错误处理方案
- 未获取到授权信息问题处理方案
- 腾讯地图配置
- 请求超时问题处理方案
- 下载应用时提示找不到zip解决方案
- 怎么关闭开发调试模式
- 获取数据失败问题处理方案
- 框架安装后,访问域名无法进入admin端(多数发生在本地)
- 底部导航失效问题
- 开放平台小程序审核通过发布失败问题
- 先升级插件后升级框架,导致云编译报debounce的错误
- 微信公众号自动回复不通
- 如何修改访问域名默认跳转端口
- 插件与框架的版本兼容问题处理方案
- 升级提示mkdir()处理方案
- 云编译时node.js内存不足导致内存溢出处理方案
- 报错Allowed memory size of ** bytes exhausted (tried to allocate ** bytes)处理方法
- Mysql修改sql_mode模式
- 框架1.0.2之前升级最新版错误Undefined array key "content"
- 安装插件提示不适配框架版本的处理
数据字典装载器
DictLoader用于加载和管理系统中的字典数据,支持从不同来源加载配置信息。
文件目录 niucloud\core\dict\DictLoader.php
class DictLoader extends Loader
{
// 命名空间
protected $namespace = '\\core\\dict\\';
// 配置名称
protected $config_name = 'dict';
// 获取默认驱动
protected function getDefault()
{
return 'Config';
}
}
需要注意装载器的core\Dict目录和app\Dict目录是不同的:
core\Dict 功能主要是具体的字典的调用方法的定义,相当于功能实现。
app\Dict 功能主要是各个类型的数据字典的枚举定义,以及通过core\Dict完成对于第三方开发者定义的扩展数据字典的加载。
├─niucloud niucloud-admin框架核心目录
│ ├─core
│ │ ├─dict
│ │ │ ├─BaseDict.php #系统基础字典
│ │ │ ├─Config.php #配置字典
│ │ │ ├─Console.php #控制台字典
│ │ │ ├─DictLoader.php #字典加载器
│ │ │ ├─DiyFormComponent.php #自定义表单组件字典
│ │ │ ├─DiyFormTemplate.php #自定义表单模板字典
│ │ │ ├─DiyFormType.php #自定义表单类型字典
│ │ │ ├─Event.php #执行事件字典
│ │ │ ├─GrowthRule.php #成长规则字典
│ │ │ ├─Lang.php #语言包字典
│ │ │ ├─MemberAccountChangeType.php #加载账户变动方式
│ │ │ ├─MemberBenefits.php #会员权益字典
│ │ │ ├─MemberGift.php #会员礼品字典
│ │ │ ├─Menu.php #加载菜单
│ │ │ ├─Notice.php #通知类字典
│ │ │ ├─PointRule.php #积分规则字典
│ │ │ ├─Poster.php #海报字典
│ │ │ ├─Printer.php #打印机字典
│ │ │ ├─RechargeGift.php #充值礼品字典
│ │ │ ├─Route.php #路由字典
│ │ │ ├─Schedule.php #计划任务字典
│ │ │ ├─SowCommunityGift.php #社区礼品字典
│ │ │ ├─UniappComponent.php #系统uniapp组件配置
│ │ │ ├─UniappLink.php #系统uniapp页面链接字典
│ │ │ ├─UniappPages.php #系统uniapp页面字典
│ │ │ ├─UniappTemplate.php #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框架对这一块的设计就可以了。会按照教程进行具体的业务功能开发就足够了。