Maison >cadre php >PensezPHP >thinkphp suppression à sélection multiple

thinkphp suppression à sélection multiple

WBOY
WBOYoriginal
2023-05-26 13:34:10735parcourir

thinkphp6 est un très excellent framework de développement PHP. Il est basé sur l'architecture MVC, a une efficacité de développement élevée, est facile à utiliser, est sûr et fiable et simplifie grandement le processus d'écriture de code. Aujourd'hui, parlons de la façon d'utiliser thinkphp6 pour implémenter la suppression à sélection multiple.

1. Introduction

La suppression à sélection multiple est l'une des fonctions courantes des applications Web modernes. Il permet à l'utilisateur de sélectionner plusieurs éléments dans une table ou une liste de données, puis de les supprimer. Dans cet article, nous présenterons comment utiliser les contrôleurs et les modèles de thinkphp6 pour obtenir cette fonctionnalité.

2. Établir la base de données

Tout d'abord, nous devons créer un exemple de table dans la base de données MySQL. Nous utiliserons des outils de ligne de commande ou phpMyAdmin pour terminer cette étape.

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;

Cela créera une nouvelle table appelée "example_table" avec les champs id, name et email.

3. Générer un modèle et un contrôleur

Ensuite, nous devons générer un modèle et un contrôleur basés sur la structure de table créée ci-dessus.

Utilisez l'outil de ligne de commande Artisan de thinkphp6 pour générer rapidement ces fichiers :

php think make:model ExempleModel --migration

L'exécution de la commande ci-dessus générera un nouveau fichier de modèle ( app /Model/ExampleModel.php ) et une nouvelle base de données fichier de migration ( base de données /migrations /aaaammjjhhmmss_create_example_model.php ).

php think make:controller ExempleController

L'exécution de la commande ci-dessus générera un nouveau fichier appelé ExempleController.php ( app /Controller/ExampleController.php ).

4. Écrivez le code

Nous sommes maintenant prêts à écrire le code du contrôleur pour gérer la suppression à sélection multiple. Dans le contrôleur, nous devons implémenter deux fonctions d'action principales : index (utilisé pour afficher toutes les données) et delete (utilisé pour gérer les demandes de suppression).

Dans le fichier app/Controller/ExampleController.php, ajoutez le code suivant :

<?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' => '删除成功'];
    }
}

Dans le code ci-dessus, nous avons d'abord importé la classe et défini deux fonctions index et delete. L'index de fonction est utilisé pour obtenir toutes les données de l'ExampleModel et les transmettre au modèle. La fonction delete récupère la liste des ID à supprimer de la requête HTTP et supprime les éléments à l'aide de la méthode SampleModel :: destroy.

Ensuite, nous devons ajouter une case à cocher et un bouton de suppression au modèle. Ouvrez le fichier app /View /example /index.html et ajoutez le code suivant :

<!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>

Dans le code ci-dessus, nous avons utilisé JavaScript pour obtenir toutes les cases à cocher sélectionnées et transmettre ces identifiants à la route /delete du serveur.

5. Test

Maintenant, nous pouvons ouvrir la console et utiliser la commande suivante pour démarrer le serveur Web.

php think run

Entrez ensuite localhost:8000/example dans le navigateur pour ouvrir la page d'accueil de l'exemple, cliquez sur la case de sélection multiple pour sélectionner les éléments à supprimer. Enfin, cliquez sur le bouton Supprimer pour supprimer l'élément sélectionné.

6. Conclusion

Dans cet article, nous utilisons le contrôleur, le modèle et la vue de thinkphp6 pour implémenter la fonction de suppression à sélection multiple. Cette fonctionnalité peut jouer un rôle important dans les applications Web et optimiser l'expérience utilisateur de l'application.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn