PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

博客列表 > laravel框架 -- 文章修改及删除 -- 2019年11月26日

laravel框架 -- 文章修改及删除 -- 2019年11月26日

Victor的博客
Victor的博客 原创
2019年11月30日 19:30:09 1504浏览

参考课程内容,完成后台文章的修改及删除功能

一、作业总结

根据课堂知识,自己改造了实现方法:
1、以内容列表页面为主要显示页面,采用弹框来处理内容的添加、修改和删除;
2、弹框内容采用ajax 的get方法获取数据
3、弹框内容提交采用ajax 的post方法发送到admins/content/add方法去处理;
4、添加、修改和删除的数据内容、操作方法非常类似,所以集中到add方法中统一处理。其中添加和修改差别在于是否有指定的id,修改和删除都是对指定id的记录做处理;
5、文章信息和文章内容分在两个不同的表中,在做数据库写入操作中采用了手动的数据库事务管理,用try+catch来处理异常。
6、百度编辑器引入时有路径重定义的问题,加入后,在弹框中的部分功能体验不好,后更换为wangEditor。

二、add方法代码实例

  1. public function add(Request $req) {
  2. //标题不能为空
  3. $data['title'] = trim($req->title);
  4. if ($data['title'] == '') {
  5. exit(json_encode(['code' => 1, 'msg' => '内容标题不能为空!']));
  6. }
  7. //将req中的传值取出,赋给$data数组
  8. $data['cate_id'] = (int) ($req->cate_id);
  9. $data['subtitle'] = trim($req->subtitle);
  10. $data['seo_title'] = trim($req->seo_title);
  11. $data['keyword'] = trim($req->keyword);
  12. $data['cover_img'] = trim($req->cover_img);
  13. $data['author'] = trim($req->author);
  14. $data['from_site'] = trim($req->cover_img);
  15. $data['descs'] = trim($req->descs);
  16. $data['is_comment'] = (int) ($req->is_comment);
  17. $data['status'] = (int) ($req->status);
  18. //富文本编辑的内容要存的内容详情的表中
  19. $detail['contents'] = trim($req->content);
  20. // 判断要执行的操作:add update del
  21. $method = $req->reqMethod;
  22. // 添加
  23. if ($method == 'add') {
  24. $data['add_time'] = time(); //添加时间
  25. // 多表操作,开启数据库事务管理,采用手动方式处理异常信息
  26. DB::beginTransaction();
  27. try {
  28. $aid = DB::table('xpcms_article')->insertGetId($data);
  29. $detail['aid'] = $aid;
  30. DB::table('xpcms_article_content')->insert($detail);
  31. DB::commit();
  32. exit(json_encode(['code' => 0, 'msg' => '保存成功!']));
  33. } catch (Exception $e) {
  34. DB::rollback();
  35. exit(json_encode(['code' => 1, 'msg' => '保存过程中发生错误!']));
  36. }
  37. }
  38. $id = $req->id;
  39. // 修改
  40. if ($method == 'update') {
  41. $data['edit_time'] = time(); //编辑时间
  42. // 多表操作,开启数据库事务管理,采用手动方式处理异常信息
  43. DB::beginTransaction();
  44. try {
  45. DB::table('xpcms_article')->where('id', $id)->update($data);
  46. $detail['aid'] = $id;
  47. DB::table('xpcms_article_content')->where('aid', $id)->update($detail);
  48. DB::commit();
  49. exit(json_encode(['code' => 0, 'msg' => '修改成功!']));
  50. } catch (Exception $e) {
  51. DB::rollback();
  52. exit(json_encode(['code' => 1, 'msg' => '修改过程中发生错误!']));
  53. }
  54. }
  55. // 删除
  56. if ($method == 'del') {
  57. //$data['edit_time'] = time(); //编辑时间
  58. // 设置status为2,做逻辑删除,前端使用时需注意
  59. DB::table('xpcms_article')->where('id', $id)->update(['status' => 2, 'edit_time' => time()]);
  60. exit(json_encode(['code' => 0, 'msg' => '删除成功!']));
  61. }
  62. }

三、实现效果图



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