Maison > cadre php > Laravel > gestion des erreurs d'enregistrement Laravel

gestion des erreurs d'enregistrement Laravel

PHPz
Libérer: 2023-05-20 21:29:36
original
708 Les gens l'ont consulté

Récemment, lors du développement à l'aide du framework Laravel, j'ai rencontré des problèmes de gestion d'erreurs concernant le formulaire d'inscription. Dans cet article, je vais partager comment j'ai utilisé les fonctionnalités de validation de formulaire et de gestion des erreurs de Laravel pour résoudre ces erreurs afin d'aider d'autres développeurs à mieux gérer les erreurs avec leurs formulaires d'inscription.

Tout d'abord, nous devons comprendre le mécanisme de validation des formulaires et de gestion des erreurs dans Laravel. Dans Laravel, nous pouvons utiliser la classe Validator pour valider les données du formulaire. Le validateur peut vérifier si les données saisies répondent aux conditions spécifiées, telles que les champs obligatoires, le format de l'e-mail, la longueur du mot de passe, etc. Si les données d'entrée ne remplissent pas les conditions spécifiées, le validateur renvoie un tableau d'erreurs. Nous pouvons utiliser la méthode withErrors() pour stocker les informations d'erreur dans Session, puis afficher les informations d'erreur dans la vue. Voyons ensuite comment implémenter cette fonctionnalité dans Laravel. Validator 类来验证表单数据。验证器可以验证输入数据是否满足规定的条件,如必填字段、邮箱格式、密码长度等等。如果输入数据不满足规定的条件,则验证器会返回一个错误数组。我们可以使用 withErrors() 方法将错误信息存储到 Session 中,然后在视图中显示错误信息。接下来,让我们看看如何在 Laravel 中实现这个功能。

首先,我们需要在注册控制器中创建一个验证器。我们可以使用 Artisan 命令 make:validator 来创建验证器。例如:

php artisan make:validator RegisterValidator
Copier après la connexion

这会在 app/Validators 目录下创建一个名为 RegisterValidator 的验证器。然后我们需要设置验证规则和错误信息。打开 RegisterValidator 类,添加以下代码:

<?php

namespace AppValidators;

use IlluminateValidationValidator;

class RegisterValidator extends Validator
{
    protected $messages = [
        'name.required' => '请输入用户名。',
        'name.max' => '用户名不能超过255个字符。',
        'email.required' => '请输入邮箱地址。',
        'email.email' => '请输入有效的邮箱地址。',
        'email.unique' => '该邮箱已经被注册。',
        'password.required' => '请输入密码。',
        'password.min' => '密码长度不能小于6个字符。',
        'password_confirmation.required' => '请输入确认密码。',
        'password_confirmation.same' => '两次输入的密码不一致。',
    ];

    public function validateConfirmPassword($attribute, $value, $parameters)
    {
        $other = $this->getValue($parameters[0]);
        return isset($other) && strcmp($value, $other) === 0;
    }
}
Copier après la connexion

在上面的代码中,我们定义了一些常见的验证规则和错误信息。如果用户没有输入必填项或者输入格式不正确,将会显示相应的错误信息。此外,我们还定义了一个自定义验证规则 validateConfirmPassword 来验证两次输入的密码是否一致。接下来,在注册控制器中添加以下代码:

<?php

namespace AppHttpControllers;

use AppUser;
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
use AppValidatorsRegisterValidator;

class RegisterController extends Controller
{
    public function showRegistrationForm()
    {
        return view('auth.register');
    }

    public function register(Request $request)
    {
        // 验证表单数据
        $validator = Validator::make($request->all(), [
            'name' => 'required|string|max:255',
            'email' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:6|confirmed',
        ]);

        // 使用自定义的 validator 类的规则验证数据
        $validator->setValidator(new RegisterValidator($validator->getTranslator()));

        if ($validator->fails()) {
            return redirect()->back()->withErrors($validator)->withInput();
        }

        // 创建用户
        $user = User::create([
            'name' => $request->input('name'),
            'email' => $request->input('email'),
            'password' => bcrypt($request->input('password')),
        ]);

        // 登录用户
        auth()->login($user);

        // 跳转到首页
        return redirect()->intended('/');
    }
}
Copier après la connexion

在上面的代码中,我们使用 Laravel 内置的 Validator 类来验证表单数据。然后我们调用 setValidator() 方法来应用我们创建的自定义 validator 类的规则验证数据。如果有错误,我们将错误信息存储到 Session 中并将用户重定向回表单页面。如果验证通过,我们创建用户并将其登录。最后,我们将用户重定向到主页。

在模板中,我们可以使用以下代码来显示错误信息:

@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif
Copier après la connexion

上面的代码将遍历 $errors

Tout d'abord, nous devons créer un validateur dans le contrôleur d'enregistrement. Nous pouvons créer un validateur en utilisant la commande Artisan make:validator. Par exemple :

rrreee

Cela créera un validateur nommé RegisterValidator dans le répertoire app/Validators. Ensuite, nous devons mettre en place des règles de validation et des messages d'erreur. Ouvrez la classe RegisterValidator et ajoutez le code suivant : #🎜🎜#rrreee#🎜🎜#Dans le code ci-dessus, nous définissons quelques règles de validation et messages d'erreur courants. Si l'utilisateur ne saisit pas les champs obligatoires ou si le format de saisie est incorrect, le message d'erreur correspondant s'affichera. De plus, nous définissons également une règle de validation personnalisée validateConfirmPassword pour vérifier si les mots de passe saisis deux fois sont cohérents. Ensuite, ajoutez le code suivant dans le contrôleur d'enregistrement : #🎜🎜#rrreee#🎜🎜#Dans le code ci-dessus, nous utilisons la classe Validator intégrée de Laravel pour valider les données du formulaire. Nous appelons ensuite la méthode setValidator() pour valider les données en appliquant les règles de la classe de validation personnalisée que nous avons créée. S'il y a une erreur, nous stockons le message d'erreur dans Session et redirigeons l'utilisateur vers la page du formulaire. Si la vérification réussit, nous créons l'utilisateur et le connectons. Enfin, nous redirigeons l'utilisateur vers la page d'accueil. #🎜🎜##🎜🎜#Dans le modèle, nous pouvons utiliser le code suivant pour afficher le message d'erreur : #🎜🎜#rrreee#🎜🎜#Le code ci-dessus traversera toutes les erreurs dans le $errors informations variables et affiche chaque message d'erreur sous forme d'élément de liste. #🎜🎜##🎜🎜#Dans cet article, nous avons appris à utiliser les fonctionnalités de validation de formulaire et de gestion des erreurs de Laravel pour gérer les erreurs du formulaire d'inscription. En étendant la fonctionnalité de validation intégrée de Laravel avec une classe de validation personnalisée, nous pouvons facilement personnaliser les règles et les messages d'erreur, améliorant ainsi la réutilisation et la maintenabilité du code. J'espère que cet article pourra vous aider à mieux gérer la validation des formulaires et la gestion des erreurs. #🎜🎜#

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal