Correcting teacher:查无此人
Correction status:qualified
Teacher's comments:完成的不错,继续加油。
参考课程内容,完成后台文章的修改及删除功能
根据课堂知识,自己改造了实现方法:
1、以内容列表页面为主要显示页面,采用弹框来处理内容的添加、修改和删除;
2、弹框内容采用ajax 的get方法获取数据
3、弹框内容提交采用ajax 的post方法发送到admins/content/add方法去处理;
4、添加、修改和删除的数据内容、操作方法非常类似,所以集中到add方法中统一处理。其中添加和修改差别在于是否有指定的id,修改和删除都是对指定id的记录做处理;
5、文章信息和文章内容分在两个不同的表中,在做数据库写入操作中采用了手动的数据库事务管理,用try+catch来处理异常。
6、百度编辑器引入时有路径重定义的问题,加入后,在弹框中的部分功能体验不好,后更换为wangEditor。
public function add(Request $req) {
//标题不能为空
$data['title'] = trim($req->title);
if ($data['title'] == '') {
exit(json_encode(['code' => 1, 'msg' => '内容标题不能为空!']));
}
//将req中的传值取出,赋给$data数组
$data['cate_id'] = (int) ($req->cate_id);
$data['subtitle'] = trim($req->subtitle);
$data['seo_title'] = trim($req->seo_title);
$data['keyword'] = trim($req->keyword);
$data['cover_img'] = trim($req->cover_img);
$data['author'] = trim($req->author);
$data['from_site'] = trim($req->cover_img);
$data['descs'] = trim($req->descs);
$data['is_comment'] = (int) ($req->is_comment);
$data['status'] = (int) ($req->status);
//富文本编辑的内容要存的内容详情的表中
$detail['contents'] = trim($req->content);
// 判断要执行的操作:add update del
$method = $req->reqMethod;
// 添加
if ($method == 'add') {
$data['add_time'] = time(); //添加时间
// 多表操作,开启数据库事务管理,采用手动方式处理异常信息
DB::beginTransaction();
try {
$aid = DB::table('xpcms_article')->insertGetId($data);
$detail['aid'] = $aid;
DB::table('xpcms_article_content')->insert($detail);
DB::commit();
exit(json_encode(['code' => 0, 'msg' => '保存成功!']));
} catch (Exception $e) {
DB::rollback();
exit(json_encode(['code' => 1, 'msg' => '保存过程中发生错误!']));
}
}
$id = $req->id;
// 修改
if ($method == 'update') {
$data['edit_time'] = time(); //编辑时间
// 多表操作,开启数据库事务管理,采用手动方式处理异常信息
DB::beginTransaction();
try {
DB::table('xpcms_article')->where('id', $id)->update($data);
$detail['aid'] = $id;
DB::table('xpcms_article_content')->where('aid', $id)->update($detail);
DB::commit();
exit(json_encode(['code' => 0, 'msg' => '修改成功!']));
} catch (Exception $e) {
DB::rollback();
exit(json_encode(['code' => 1, 'msg' => '修改过程中发生错误!']));
}
}
// 删除
if ($method == 'del') {
//$data['edit_time'] = time(); //编辑时间
// 设置status为2,做逻辑删除,前端使用时需注意
DB::table('xpcms_article')->where('id', $id)->update(['status' => 2, 'edit_time' => time()]);
exit(json_encode(['code' => 0, 'msg' => '删除成功!']));
}
}