Maison >développement back-end >tutoriel php >Validation de forme dynamique dans Laravel avec Prohibited_if

Validation de forme dynamique dans Laravel avec Prohibited_if

James Robert Taylor
James Robert Taylororiginal
2025-03-06 02:07:09830parcourir

Dynamic Form Validation in Laravel with prohibited_if

La règle de validation de Laravel prohibited_if simplifie la gestion des champs de forme interdépendants. Cette règle restreint avec élégance les entrées de champ en fonction des valeurs des autres champs, améliorant la validation dynamique de la forme.

compréhension prohibited_if

La règle prohibited_if garantit que des champs spécifiques restent vides si une condition est remplie. Ceci est particulièrement utile pour les formes dynamiques avec des champs interconnectés.

Exemple:

use Illuminate\Support\Facades\Validator;

$validator = Validator::make($request->all(), [
    'freelance_company' => 'prohibited_if:type,individual',
    'type' => 'required|in:individual,business'
]);

Application du monde réel: Enregistrement des membres

Considérons un système d'inscription professionnelle d'adhésion:

<?php namespace App\Http\Controllers;

use App\Models\Membership;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;

class MembershipController extends Controller
{
    public function store(Request $request)
    {
        $request->validate([
            'membership_type' => 'required|in:personal,corporate',
            'full_name' => 'required|string|max:255',
            'organization_name' => [
                'prohibited_if:membership_type,personal',
                'required_if:membership_type,corporate',
                'string',
                'max:255',
            ],
            'organization_size' => [
                'prohibited_if:membership_type,personal',
                'required_if:membership_type,corporate',
                'integer',
                'min:1',
            ],
            'tax_id' => [
                Rule::prohibitedIf(fn() =>
                    $request->membership_type === 'personal' ||
                    $request->country !== 'US'
                ),
                'string',
                'size:9',
            ],
        ], [
            'organization_name.prohibited_if' => 'Organization details are unnecessary for personal memberships.',
            'tax_id.prohibited_if' => 'Tax ID is only needed for US-based corporate memberships.',
        ]);
        Membership::create($request->validated());
        return response()->json([
            'message' => 'Membership created successfully'
        ]);
    }
}

Cet exemple présente:

  • Exigences de champ conditionnel basées sur membership_type.
  • Validation de l'identification d'impôt pour les membres américains des entreprises uniquement.
  • Effacer les messages d'erreur personnalisés.
  • Intégration avec d'autres règles de validation.

Extension avec plusieurs conditions:

Vous pouvez ajouter plusieurs conditions:

'business_license' => [
    Rule::prohibitedIf(fn() =>
        $request->membership_type === 'personal' ||
        !in_array($request->business_type, ['retail', 'franchise'])
    ),
    'required_if:business_type,retail,franchise',
    'string',
]

prohibited_if permet une logique de validation complexe tout en maintenant la lisibilité du code. Cela garantit que vos formulaires s'adaptent efficacement au contexte de l'entrée utilisateur.

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