thinkphp5框架结合ajax异步交互修改状态非物理删除的方法
封装js删除方法
在thinkphpwu/public/static/admin/js 创建common.js
/**
* 通用化删除操作
* @param obj
*/
function app_del(obj) {
alert("dianji");
// 获取模板当中的url地址
url = $(obj).attr('del_url');
layer.confirm('确认要删除吗?', function (index) {
$.ajax({
type: 'POST',
url: url,
dataType: 'json',
success: function (e) {
if (e.code == 1) {
// 执行跳转
self.location = e.data.jump_url;
} else if (e.code == 0) {
layer.msg(e.msg, {icon: 2, time: 2000});
}
},
error: function (e) {
console.log(e.msg);
},
});
});
}
视图html文件引用
<a style="text-decoration:none" class="ml-5"
onClick="app_del(this)" del_url="{:url('news/delete', ['id'=>$v.id])}" href="javascript:;"
title="删除"><i class="Hui-iconfont"></i></a>
将common.js放入到公用的底部文件中
{load href="__STATIC__/admin/js/common.js"}
base基类创建delete方法
在base基类文件中创建公共的delete删除方法,并非屋里删除,而是修改状态,这样的话,不用在所有的控制器中新建delete方法了,
/**
* 删除逻辑
*/
public function delete($id = 0)
{
if (!intval($id)) {
return $this->result('', 0, 'ID不合法');
}
// 通过id 去库中查询下记录是否存在
// 如果你的表和我们控制器文件名 一样。 news news
// 但是我们 不一样。 需要在控制器层,修改model的值,
$model = $this->model ? $this->model : request()->controller();
// 如果php php7 $model = $this->model ?? request()->controller();
try {
$res = model($model)->save(['status' => -1], ['id' => $id]);
} catch (\Exception $e) {
return $this->result('', 0, $e->getMessage());
}
if ($res) {
return $this->result(['jump_url' => $_SERVER['HTTP_REFERER']], 1, 'OK');
}
return $this->result('', 0, '删除失败');
}
效果展示
数据库中