博主信息
博文 53
粉丝 3
评论 0
访问量 66930
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
2020年1月15日-列举后台数据库添加、修改记录共用一个模板遇到的坑-php线上培训九期班
邯郸易住宋至刚
原创
1119人浏览过

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

后台操作中大部分工作就是数据库的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举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学