设置是什么
模块a-settings
提供了设置
特性,可以在前端集中显示每个模块的设置
管理页面,便于用户统一配置
由于
设置
底层采用的是Form验证
特性,所以只需提供与设置
相关的JSON Schema
配置信息即可
设置分类
每个模块可以提供两种设置
:
用户设置
:与用户相关的设置
实例设置
:与当前实例相关的设置
定义Schema和Validation
src/suite-vendor/test-party/modules/test-party/backend/src/meta.js
从略
定义Settings
在模块的meta
中,分别为用户设置
和实例设置
指定validator
src/suite-vendor/test-party/modules/test-party/backend/src/meta.js
settings: {
user: {
validator: 'userTest',
},
instance: {
validator: 'instanceTest',
},
},
名称 | 说明 |
---|---|
settings.user | 用户设置 |
settings.user.validator | 与用户设置相关的validator |
settings.instance | 实例设置 |
settings.instance.validator | 与实例设置相关的validator |
定义缺省值
在模块的Config
中,分别为用户设置
和实例设置
指定缺省值
src/suite-vendor/test-party/modules/test-party/backend/src/config/config.js
// settings
config.settings = {
instance: {
groupInfo: {
slogan: '',
},
},
user: {
groupInfo: {
username: 'zhennann',
},
groupExtra: {
panelExtra: {
groupInfo: {
mobile: '123',
sex: 1,
language: 'en-us',
},
},
},
},
};
使用设置
-
前端页面:在前端,可以直接通过
设置
菜单来管理每个模块的设置
页面 -
后端Api:在后端,模块
a-settings
提供了全局Bean组件settings
src/suite-vendor/test-party/modules/test-party/backend/src/controller/test/feat/settings.js
- Api: 用户设置
getUser
获取某个属性的值
let value = await this.ctx.bean.settings.getUser({
name: '/groupInfo/username'
});
名称 | 说明 |
---|---|
name | 字段名称,采用JSON Pointer 格式 |
loadSettingsUser
获取完整的设置
对象
let data = await this.ctx.bean.settings.loadSettingsUser();
let value = data.groupInfo.username;
saveSettingsUser
保存完整的设置
对象
data.groupInfo.username = 'zhennann';
await this.ctx.bean.settings.saveSettingsUser({ data });
- Api: 实例设置
getInstance
获取某个属性的值
let value = await this.ctx.bean.settings.getInstance({
name: '/groupInfo/slogan'
});
名称 | 说明 |
---|---|
name | 字段名称,采用JSON Pointer 格式 |
loadSettingsInstance
获取完整的设置
对象
let data = await this.ctx.bean.settings.loadSettingsInstance();
let value = data.groupInfo.slogan;
saveSettingsInstance
保存完整的设置
对象
data.groupInfo.slogan = 'Less is more, while more is less';
await this.ctx.bean.settings.saveSettingsInstance({ data });
评论: