thinkphp6是一款非常优秀的php开发框架,它基于mvc架构,开发效率高、易上手、安全可靠,同时极大简化了代码编写的流程。今天,我们来谈一下使用thinkphp6实现多选删除的方法。
一、前言
多选删除是现代Web应用程序的常见功能之一。它允许用户在数据表格或列表中选择多个项目,然后可以删除它们。在这篇文章中,我们将介绍如何使用thinkphp6的控制器和模型来实现这个功能。
二、建立数据库
首先,我们需要在MySQL数据库中建立一个示例表。我们将使用命令行工具或phpMyAdmin来完成这个步骤。
立即学习“PHP免费学习笔记(深入)”;
CREATE TABLE example_table (id int(11) NOT NULL AUTO_INCREMENT,name varchar(255) NOT NULL,email varchar(255) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
这将创建一个名为“ example_table”的新表,其中包含id,name和email字段。
三、生成模型和控制器
接下来,我们需要根据上面创建的表结构来生成一个模型和一个控制器。
使用thinkphp6的Artisan命令行工具可以快速生成这些文件:
php think make:model ExampleModel --migration
运行上述命令将生成一个新的模型文件( app /Model/ExampleModel.php )和一个新的数据库迁移文件( database /migrations /yyyymmddhhmmss_create_example_model.php )。
php think make:controller ExampleController
运行上述命令将生成一个名为ExampleController.php的新文件( app /Controller/ExampleController.php )。
四、编写代码
现在我们已经准备好编写控制器代码来处理多选删除了。在控制器中,我们需要实现两个主要的action函数:index(用于显示所有数据)和delete(用于处理删除请求)。
在app /Controller /ExampleController.php文件中,添加以下代码:
<?php
namespace appcontroller;
use thinkacadeView;
use thinkRequest;
use appmodelExampleModel;
class ExampleController
{
public function index()
{
$list = ExampleModel::all();
return View::fetch('index', [
'list' => $list,
]);
}
public function delete(Request $request)
{
$ids = $request->param('ids');
foreach ($ids as $id) {
ExampleModel::destroy($id);
}
return ['status' => 'success', 'message' => '删除成功'];
}
}在上面的代码中,我们首先导入了类,并定义了两个函数index和delete。函数index用于从ExampleModel中获取所有数据,并将其传递到模板中。函数delete从HTTP请求中获取要删除的ID列表,并使用ExampleModel::destroy方法删除这些项目。
接下来,我们需要为模板添加一个多选框以及删除按钮。打开app /View /example /index.html文件,添加以下代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Example</title>
</head>
<body>
<h1>Example</h1>
<table>
<thead>
<tr>
<th><input type="checkbox" id="check-all"></th>
<th>ID</th>
<th>Name</th>
<th>Email</th>
</tr>
</thead>
<tbody>
<?php foreach ($list as $item): ?>
<tr>
<td><input type="checkbox" name="ids[]" value="<?php echo $item->id ?>"></td>
<td><?php echo $item->id ?></td>
<td><?php echo $item->name ?></td>
<td><?php echo $item->email ?></td>
</tr>
<?php endforeach ?>
</tbody>
</table>
<button id="btn-delete">删除</button>
<script>
var btnDelete = document.querySelector('#btn-delete');
btnDelete.addEventListener('click', function () {
var ids = [];
var checkboxes = document.querySelectorAll('input[type=checkbox][name^=ids]:checked');
for (var i = 0; i < checkboxes.length; i++) {
ids.push(checkboxes[i].value);
}
if (ids.length > 0) {
if (confirm('确定删除?')) {
var xhr = new XMLHttpRequest();
xhr.open('POST', '/example/delete');
xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
xhr.onload = function () {
var result = JSON.parse(xhr.responseText);
if (result.status == 'success') {
alert(result.message);
location.reload();
} else {
console.error(result);
alert('删除失败');
}
};
xhr.onerror = function () {
console.error(xhr);
alert('网络异常,请重试');
};
xhr.send(JSON.stringify({ids: ids}));
}
} else {
alert('请选择要删除的项目');
}
});
var checkAll = document.querySelector('#check-all');
checkAll.addEventListener('click', function () {
var checkboxes = document.querySelectorAll('input[type=checkbox][name^=ids]');
for (var i = 0; i < checkboxes.length; i++) {
checkboxes[i].checked = checkAll.checked;
}
});
</script>
</body>
</html>在上述代码中,我们使用了JavaScript来获取所有选中的多选框,并将这些ID传递给服务器的/delete路由。
五、测试
现在,我们可以打开控制台,使用以下命令将Web服务器启动起来。
php think run
然后在浏览器中输入localhost:8000/example,即可打开example的首页,点击多选框以选择要删除的项。最后点击删除按钮即可删除选择的项。
六、结论
在这篇文章中,我们使用thinkphp6的控制器,模型和视图来实现了多选删除的功能。这个功能可以在Web应用程序中发挥重要作用,优化应用程序的用户体验。
以上就是thinkphp多选删除的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号