Mastering Laravel 12 Conditional Validation
July 7, 2025Mastering Laravel 12 Conditional Validation
Laravel 12's validation system is super powerful, and conditional validation makes your forms smarter. With it, you can enforce rules based on other field values. For example, requiring a “company_name” field only if “employment_status” is “employed”, or a “credit_card_number” only when payment method is “credit_card”. This adds flexibility and improves user experience.
🔍 Why use conditional validation?
- Fields might not always be required.
- Makes forms dynamic and avoids unnecessary input.
- Perfect for multi-step forms or building smart APIs.
🛠 Laravel 12 tools for conditional validation
required_ifrequired_withRule::when()
1. Practical example with required_if
// In your Controller:
$request->validate([
'employment_status' => 'required|in:employed,unemployed',
'company_name' => 'required_if:employment_status,employed',
]);
If “employment_status” is “employed”, then “company_name” becomes mandatory.
2. Example using required_with
// In your Controller:
$request->validate([
'shipping_address' => 'required_with:delivery_method',
'delivery_method' => 'nullable|in:pickup,delivery',
]);
If the user picks a delivery method, the shipping address must be provided.
3. Example using Rule::when()
use Illuminate\Validation\Rule;
$request->validate([
'payment_method' => 'required|in:credit_card,paypal',
'credit_card_number' => [
Rule::when($request->input('payment_method') === 'credit_card', ['required', 'numeric', 'digits:16']),
],
]);
When payment method is “credit_card”, the number field must be a 16-digit number.
📌 Pro tips
- Move validation logic to a
FormRequestclass for cleaner controllers. - Use helper methods like
sometimes()orbail()for better rule control. - Write tests to confirm your validation works under various scenarios.
📚 Quick wrap‑up
Conditional validation makes forms intelligent and context-aware. Laravel 12 gives you multiple approaches, and with practical examples, you can pick the one that fits your needs most.
Blog
Jul 13, 2025
Laravel provides multiple ways to write reusable query logic. The two most common approaches are using Scopes with Traits or the newer #[UseEloquentBu...
Aug 17, 2025
Laravel Global Scopes: Automatic Query Filtering Eloquent Importance: Enforce consistent filters across all model queries (e.g., Soft Del...
Jul 01, 2025
🚫 Stop Copy-Pasting Code! Ever duplicated slug logic or logging across multiple models? Laravel's Traits got your back. 1. What’s a Trait?...
Jan 27, 2026
Introduction React Native is one of the most widely used frameworks for cross-platform mobile application development. However, iOS build time ha...
Jul 01, 2025
🚀 Laravel Queue & Job System We’re gonna walk you through Laravel queues from setup to deploying in production using Supervisor. Step 1...
Jul 01, 2025
Supercharge Your PHP Enums with archtechx/enums PHP 8.1 introduced native enums—type‑safe sets of named values like statuses or roles. The arch...