thinkphp多选删除

广告:宝塔Linux面板高效运维的服务器管理软件 点击【 https://www.bt.cn/p/uNLv1L 】立即购买

thinkphp多选删除

thinkphp6是一款非常优秀的PHP开发框架,它基于MVC架构,开发效率高、易上手、安全可靠,同时极大简化了代码编写的流程。今天,我们来谈一下使用thinkphp6实现多选删除的方法。

一、前言

多选删除是现代Web应用程序的常见功能之一。它允许用户在数据表格或列表中选择多个项目,然后可以删除它们。在这篇文章中,我们将介绍如何使用thinkphp6的控制器和模型来实现这个功能。

二、建立数据库

首先,我们需要在MySQL数据库中建立一个示例表。我们将使用命令行工具或phpMyAdmin来完成这个步骤。

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文件中,添加以下代码:

<?phpnamespace appcontroller;use thinkacadeView;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多选删除的详细内容,更多请关注9543建站博客其它相关文章!

广告:SSL证书一年128.66元起,点击购买~~~

9543建站博客
一个专注于网站开发、微信开发的技术类纯净博客。

作者头像
admin创始人

肥猫,知名SEO博客站长,14年SEO经验。

上一篇:swoole如何运行
下一篇:yii2如何安装

发表评论

关闭广告
关闭广告