产品的规格属性功能如何开发?JS动态增减和Json格式数据实践
一直想把产品模型这块优化一下,今天终于有时间了,忙了一个大早,终于更线上线!
在OneAdmin的信息管理中,为产品模型新增一个“产品属性和参数”的功能。这是一个公司的展示型功能模块,而我们在做的商城中已经有SKU模式了,因此该功能不需要SKU那么复杂,只需要有产品的属性参数展示就可以了。
1、每个属性由名称和内容构成,成对出现,即2个1组;
2、每个产品的属性不同,需要可以随时变化;
3、每个产品的属性数量不同,需要可以随时变化;
在产品模型中,使用动态增加的方式,同时增加一组(两个)文本输入框:一个输入属性名称,一个输入属性内容;
之后,使用json_encode()方法将属性名称和属性内容转化为Json格式,然后数据存储到数据库中;读取时,再通过json_decode()方法将其转化为普通的数组,进而方便前端呈现。
在数据库,product表中创建一个名为“spec”的json格式字段,用于该功能的数据存储;
给后台的前端增加一个动态输入框的界面样式,并将form表单中的此字段命名为spec;
十分要注意的是,后台前端传值的name名称,应当定名为 spec[].name和spec[].value,以确保传递到控制器时,有关键的下标键值。此时,传递过来的数组是一个二维数组。如图:
撰写后台前端的“增加”、“删除”功能,同时动态操作绑定js控制;
然后,后台控制器中接收传值、验证数据,并对数据进行整理之后,存储到数据中;
一般,在控制器中判断是否为get请求。如果是的时候,将读取spec字段,并转化为数组形式。
此时,数据库中有存在spec这个json数据了,基本算完成了。
表单最后阶段,分两种情况:
1、新增产品时,spec字段是没有数据的;
如果是get请求,且spec不存在的情况下,为表单初始化一组输入框;
2、编辑产品时,spec字段是有数据的;
如果是get请求,且spec存在的情况下,为表单初始化相应组的输入框,并在输入框中显示相应的值。
此时,还需要加一个判断,判断spec的数组下标为1时,显示增加;不为1时,显示移除;
其中,volist可以将数组的key读取出来,因此使用volist进行模板渲染。
在Api中读取spec字段,并将spec字段中的内容,呈现给前端用户。以下是#微信小程序的前端演示。
综上,基本实现了产品属性的自定义添加功能,快来试试吧!
举报/反馈
最近更新影视资讯
- 韵府群玉
- 老年临终关怀护理集锦9篇
- 如何评价剧场版动画《和谐(harmony/ハーモニー)》原作:伊藤计划 ?
- 智人战胜尼人的决定性因素 是神灵崇拜与艺术品 在3万7千年前智人击败了远比自己强
- 沈阳参考消息(2017年1月11日)
- 密集架区密集架书库图书馆负一楼期刊阅览区中外文期刊图书馆一楼图书借阅区(A-H
- 费维光:脾胃病17方
- 土耳其身为伊斯兰国家,为什么允许“风俗产业”合法化?
- 高中教师教学反思
- 三观尽毁!90后公务员出轨50岁女上司,聊天言语暧昧,妻子怒举报
- 22应用心理学考研347 首师360有调剂院校吗?
- 铃木凉美女士,你仍期待同时收获怜爱与尊敬吗?
- 团建别墅 | 确认过眼神,是能疯一起的人!Boss,今年年会我们泡私家温
- 《归来》观后感
- 翻译伦理的重要性和译者荣辱观建设研究
- 高二语文期末考试测试题及答案
- 国医大师名单!在北京看中医该找谁,这下全知道!
- 这些年爱过的同人文(BG)
- 荷兰深陷风俗业?日本都要甘拜下风,为何能稳坐世界顶尖位置!
- 戴安娜25年前私密录像首次解密:自述性生活,全英国都被炸懵逼了
- 原创上官婉儿为什么必须死,她做的这件事太无耻,李隆基忍无可忍
- 「医药速读社」Paxlovid临床失败 礼来斥巨资引进Kv1.3抑制剂
- 她是韩国性感女神,靠出演“三级片”走红,今41岁韵味不减当年!
- 电影市场有望点燃 好莱坞大片排队上映
- 评荐《传染病(Contagion)》