博客列表 >2020年1月15日-列举后台数据库添加、修改记录共用一个模板遇到的坑-php线上培训九期班

2020年1月15日-列举后台数据库添加、修改记录共用一个模板遇到的坑-php线上培训九期班

邯郸易住宋至刚
邯郸易住宋至刚原创
2020年01月16日 00:12:55937浏览

后台添加、更新共用一个模板遇到的坑及解决办法

后台操作中大部分工作就是数据库的CURD,而新增与修改中有好多相同的地方,只是有个别地方需要根据条件来判断是新增还是更新。如果共用一个模板,不但从理论上说得过去,而且实践层面上也是行得通的。下面是我在实践过程中遇到的一些问题也就是俗说的“坑”,以及解决办法,拿出来跟大家分享。

一、传递修改记录的ID

1、传递ID的需求

记录中的id是唯一的,可以通过记录的id来实现精准定位,因此更新、删除都需要把需要操作的记录的id传给服务器相关程序来处理。

2、步骤

首先需要在js脚本方法中传参:如onclick = “edit(id)”或者 onclick = “delete(id)”等。
其次需要在定义该方法时传参:如function edit(id){……}
第三,如果是修改记录,就一定要在修改页面中添加<input type="hidden" name="admin_id" value="{{$admin['id']}}">,然后在后台相应的方法中使用$admin_id = (int)$request->admin_id;来接收传过来的被修改记录的id;
否则,后台是拿不到被修改记录的id的。
如果没有这个id,修改页面的数据是无法渲染出来的。

二、Layer.open()参数及正确应用

一般来说,现在添加记录时前端是使用layer.open(),其中的几个参数中,最需要注意的有两个地方:type有五个可选参数,分别是0、1、2、3、4,其中我们选择的是2;这一点大家一定要注意,要不然就会在url传参时遇到很大的问题。
还有一个问题,layer.open中的content:’/admins/admin/add?id=’+id,请注意!这里是get传参,注意形式。

三、新增与更新页面共享

由于新增和更新使用了同一个页面,修改时能够拿到被修改记录的id,所以能渲染出来前端的数据,但是新增是没有id可以传到服务器的,这们前端布置好的value=”{{$admin[‘username’]}}”等信息就会报错,所以需要判断一下:
value=”{{isset($admin[‘username’])?($admin[‘username’]:’’}}

四、保存更新结果时,用户名重复

因管理员的username字段一般是作为登录用户名来用的,因此必须保证用户的唯一,也就是不允许重名,当然也就不能随便修改用户名了。所以遇到以下问题
1062 Duplicate entry ‘rxf’ for key ‘admin_name’
可以将username的值去掉,更新时不要更新。

五、删除传参问题

大家注意啊,删除传参只需要三个步骤:

1、在onclick=”delete(id)”处传参

2、在定义方法时 function delete(id)传参

3、后台使用$admin_id = (int)$request->admin_id;来获取

!!!这里不用添加<input type="hidden" name="admin_id" value="{{$admin['id']}}">,也不要试图使用var admin_id = $.trim($(‘input[name=”admin_id”]’).val());想多了,根本不用这样。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议