Maison  >  Article  >  développement back-end  >  Middleware CodeIgniter : simplification de la validation des formulaires et du filtrage des données

Middleware CodeIgniter : simplification de la validation des formulaires et du filtrage des données

WBOY
WBOYoriginal
2023-07-29 16:42:21882parcourir

CodeIgniter Middleware : simplifiez la validation des formulaires et le filtrage des données

Lors du développement d'applications Web, la validation des formulaires et le filtrage des données sont des étapes essentielles. En tant que framework PHP populaire, CodeIgniter fournit un ensemble d'outils de validation flexibles qui permettent aux développeurs de gérer facilement les tâches de validation de formulaire et de filtrage de données. En utilisant un middleware, nous pouvons simplifier et optimiser davantage ces tâches.

Le middleware est une fonctionnalité puissante du framework CodeIgniter, qui peut exécuter certains codes avant ou après la méthode du contrôleur. Cela nous permet de gérer les tâches courantes dans le middleware sans avoir à répéter la validation et le filtrage dans chaque méthode de contrôleur.

Ci-dessous, nous présenterons comment utiliser le middleware pour simplifier la validation des formulaires et le filtrage des données.

Tout d’abord, nous devons créer une classe middleware personnalisée. Dans CodeIgniter, les classes middleware peuvent être placées dans le répertoire application/Middleware. Nous créons un fichier nommé FormValidationMiddleware.php et écrivons le code suivant :

<?php
// application/Middleware/FormValidationMiddleware.php

namespace AppMiddleware;

use CodeIgniterExceptionsPageNotFoundException;
use ConfigServices;

class FormValidationMiddleware
{
    public function before(RequestInterface $request, $arguments = null)
    {
        $config = config('Validation');

        $validation = Services::validation($config);

        if (!$validation->run($request->getPost())) {
            throw PageNotFoundException::forInvalidRequest();
        }

        // 可以在这里进行数据过滤

        return $request;
    }

    public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
    {
        return $response;
    }
}

Dans le code ci-dessus, nous utilisons la classe Validation de CodeIgniter pour la validation du formulaire. Tout d’abord, nous avons chargé le fichier de configuration Validation et créé une instance de vérification basée sur le fichier de configuration. Nous utilisons ensuite l'instance de validation pour valider les données de la requête POST. Si la vérification échoue, nous pouvons choisir de lancer une PageNotFoundException, indiquant que la demande n'est pas valide. Si la vérification réussit, nous pouvons ajouter du code de filtrage des données dans la méthode before.

Ensuite, nous devons enregistrer la classe middleware dans le fichier config/Events.php. Recherchez le code suivant :

$events->on('pre_system', function () {
    // Code...
});

Dans ce bloc de code, nous pouvons commencer à enregistrer la classe middleware. Le code est le suivant :

$events->on('pre_system', function () {
    // 注册表单验证中间件
    $middlewares = [
        AppMiddlewareFormValidationMiddleware::class,
    ];

    Services::middlewares()
        ->attach($middlewares)
        ->setPriority(0)
        ->setAsGlobal();
});

Dans le code ci-dessus, nous avons créé un tableau $middlewares et ajouté la classe middleware FormValidationMiddleware au tableau. Ensuite, nous utilisons la classe Services de CodeIgniter pour enregistrer le middleware. Nous définissons la priorité du middleware sur 0, ce qui signifie que ce middleware s'exécutera avant tous les autres middlewares. Enfin, utilisez la méthode setAsGlobal() pour rendre le middleware global afin qu'il prenne effet dans les requêtes dans toute l'application.

Maintenant, nous avons créé avec succès une classe middleware et l'avons enregistrée. Ci-dessous, nous montrerons comment utiliser le middleware dans le contrôleur pour la validation des formulaires et le filtrage des données.

Supposons que nous ayons un contrôleur appelé UserController, qui possède une méthode appelée register() qui gère la soumission du formulaire pour l'enregistrement de l'utilisateur. Nous avons ajouté l'annotation middleware @middleware sur la méthode pour référencer le middleware que nous venons de créer :

<?php
// application/Controllers/UserController.php

namespace AppControllers;

use CodeIgniterController;
use CodeIgniterValidationRules;

class UserController extends Controller
{
    /**
     * @middleware(AppMiddlewareFormValidationMiddleware)
     */
    public function register()
    {
        // 其他处理逻辑...

        // 如果代码执行到这里,说明表单验证和数据过滤已经完成
    }
}

Comme indiqué ci-dessus, en ajoutant l'annotation @middleware sur la méthode et en spécifiant l'espace de noms complet de la classe middleware, nous pouvons appliquer le middleware à méthodes spécifiques.

Dans l'exemple ci-dessus, nous avons utilisé uniquement la fonction de validation de formulaire, mais selon vos propres besoins, vous pouvez ajouter une autre logique de filtrage de données requise dans la méthode before du middleware.

L'utilisation d'un middleware pour la validation des formulaires et le filtrage des données peut grandement simplifier les tâches de développement. Cela nous aide à réduire le code en double dans chaque méthode de contrôleur, rendant le code plus rationalisé et plus lisible. Dans le même temps, le middleware fournit également une manière découplée de gérer les demandes, rendant nos applications plus modulaires et plus faciles à maintenir.

J'espère que cet article pourra vous aider à mieux comprendre et utiliser le middleware CodeIgniter pour simplifier les tâches de validation de formulaire et de filtrage des données.

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