検索

thinkphp6 は、MVC アーキテクチャに基づいた非常に優れた PHP 開発フレームワークで、開発効率が高く、使いやすく、安全性と信頼性が高く、コード作成プロセスを大幅に簡素化します。今日は、thinkphp6 を使用して複数選択削除を実装する方法について説明します。

1. はじめに

複数選択の削除は、最新の Web アプリケーションの一般的な機能の 1 つです。これにより、ユーザーはデータ テーブルまたはリスト内の複数の項目を選択し、それらを削除できます。この記事では、thinkphp6 のコントローラーとモデルを使用してこの機能を実現する方法を紹介します。

2. データベースの作成

まず、MySQL データベースにサンプル テーブルを作成する必要があります。この手順を完了するには、コマンド ライン ツールまたは phpMyAdmin を使用します。

CREATE TABLE example_table (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(255) NOT NULL ,
email varchar(255) NOT NULL,
主キー (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

これにより、ID、名前、電子メールのフィールドを持つ「example_table」という新しいテーブルが作成されます。

3. モデルとコントローラーの生成

次に、上で作成したテーブル構造に基づいてモデルとコントローラーを生成する必要があります。

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 ) という名前の新しいファイルが生成されます。

4. コードを作成する

これで、複数選択の削除を処理するコントローラー コードを作成する準備が整いました。コントローラーでは、index (すべてのデータの表示に使用) と delete (削除要求の処理に使用) という 2 つの主要なアクション関数を実装する必要があります。

app/Controller/ExampleController.php ファイルに、次のコードを追加します。

<?php
namespace 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 の 2 つの関数を定義しました。関数インデックスは、ExampleModel からすべてのデータを取得し、それをテンプレートに渡すために使用されます。 delete 関数は、HTTP リクエストから削除する ID のリストを取得し、ExampleModel::destroy メソッドを使用して項目を削除します。

次に、複数選択ボックスと削除ボタンをテンプレートに追加する必要があります。アプリの /View /example /index.html ファイルを開き、次のコードを追加します。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Example</title>
</head>
<body>
    <h1 id="Example">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 に渡します。ルート。

5. テスト

これで、コンソールを開いて次のコマンドを使用して Web サーバーを起動できます。

php think run

ブラウザに「localhost:8000/example」と入力してexampleのホームページを開き、複数選択ボックスをクリックして削除する項目を選択します。最後に、「削除」ボタンをクリックして、選択した項目を削除します。

6. 結論

この記事では、thinkphp6 のコントローラー、モデル、ビューを使用して、複数選択削除機能を実装します。この機能は Web アプリケーションで重要な役割を果たし、アプリケーションのユーザー エクスペリエンスを最適化します。

以上がthinkphpの複数選択の削除の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。