fecshop后台加入配置项
因为文件配置项,修改配置需要到文件中修改,对于终端用户操作友好度不够,因此通过后台配置的方式,来更改配置项
要点
1.为了更好的扩展性,后台的各个配置想,是通过配置文件生成的,也就是通过一个配置数组,进而在后台展示出来配置项,这样第三方插件,可以方便的在后台添加配置项
2.services等部分的类属性的取出,把直接读取类属性,改成从get方法中读取,以及使用set方法设置,而不是直接赋值
3.在get和set方法中,需要加入处理,也就是通过一个组件来统一处理,通过传递变量给这个组件
4.组件在yii bootstrap过程时优先执行,然后从数据库取出来数据,保存到类变量中,为了更好的性能,可以从缓存读取
5.组件接收从get 和set方法中传递的参数,然后处理,从数据库中取出来的数据,查看是否存在配置,如果存在,则返回数据库的,如果没有,则返回配置文件的值。
6.这样原来直接调用services类变量的地方都需要改成从get方法中读取值。这样就可以读取数据库的配置了
需要满足开发的便利性,可扩展性,以及终端用户的操作便利性
配置项
[
'config' => [
'product' => [
'image' => [
'dbConfig' => [
[
'key' => 'maxUploadMSize',
'label' => 'max upload size(MB)',
'dbType' => 'int',
'fecType' => 'services-product-image',
'remark' => '上传图片的最大size(MB)',
'show' => [
'type' => 'input',
],
'rules' => [
['range' => [1, 100]]
],
],
[
'key' => 'pngCompressionLevel',
'label' => 'Png Compression Level',
'dbType' => 'int',
'show' => [
'type' => 'select',
'options' => [
1 => '1',
2 => '2',
3 => '3',
4 => '4',
5 => '5',
6 => '6',
7 => '7',
8 => '8',
9 => '9',
]
],
'fecType' => 'services-product-image',
'remark' => 'PNG图片压缩的比例(0-9)',
],
jpegQuality
]
],
'product' => [
'dbConfig' => [
[
'key' => 'productSpuShowOnlyOneSku',
'label' => 'product Spu Show Only One Sku',
'dbType' => 'boolean',
'fecType' => 'services-product',
'remark' => 'true: 代表只显示一个sku, false: 代表产品全部显示',
'show' => [
'type' => 'select-boolean',
],
],
],
],
]
]
]
config
: 下面是配置数组部分内容
product
: 配置的一级分类,也就是将配置进行了分类,配置的内容挂在二级分类的节点上,相当于对配置进行归类,
譬如产品部分的配置,都会归属到product
image
:配置的二级分类,类似于上面的一级分类
dbConfig
: 配置信息
下面着重说一下dbConfig里面的内容
[
'key' => 'maxUploadMSize',
'label' => 'max upload size(MB)',
'dbType' => 'int',
'fecType' => 'services-product-image',
'remark' => '上传图片的最大size(MB)',
'show' => [
'type' => 'input',
],
'rules' => [
['range' => [1, 100]]
],
],
1.key
: 配置的key,这个和配置文件中的配置项一致(不是唯一值)
2.label
: 配置项的label,字符串描述
3.dbtype
: 这个配置项的字段类型,有 int
, string
, boolean
, 三种
4.fecType
:fecshop中的类型,譬如:
4.1services-product-image
,代表的是services product image这个services的配置,这个配置项,将用于services里面字符.
4.2modules,就是modules-cms-params
,
4.3全局params,就用 params
5.remark
: 字符串描述
6.show.type
:在后台的显示方式,分为 input
, select
, select-boolean
,inputArray
6.1如果是select
,需要添加options
6.2如果dbtype
为boolean
,那么show.type
自动为select-boolean
6.3如果配置项的值为array,那么可以使用inputArray
,然后内容使用json数组即可,譬如
[30, 60, 90]
,对应的json格式为[30,60,90]
['1' => 11, '2' => 22]
,对应的json格式为 {"1":11, "2":22}
7.rules
: 进行数据验证
7.1['range' => [1, 100]]
,代表大于等于1,小于100,如果某一侧没有范围,则填写null
,譬如['range' => [1, null]]
7.2['in' => [1,2,4,6,8]]
,代表值只能是1,2,4,6,8
中的一个
7.3['equals' => 5]
, 等于
7.4emails
, email格式验证
数据库存储
appName,