Maison >développement back-end >tutoriel php >Validation de forme dynamique dans Laravel avec 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:
membership_type
. 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!