fecshop后台配置项

需求分享 · Fecmall · 于 5年前 发布 · 1657 次阅读

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:在后台的显示方式,分为 inputselect, select-booleaninputArray

6.1如果是select,需要添加options

6.2如果dbtypeboolean,那么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,

共收到 1 条回复
Fecmall#15年前 0 个赞
{
	"id":1,
	"scope": "common",
	"data": [
		{
			"key": "imageSize",
			"val": 40,
			"type": "services-product-image",
			"path": "product"
		},
		{
			"key": "imageSize",
			"val": 40,
			"type": "services-product-image",
			"path": "product"
		},

	],


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