Home > Backend Development > PHP Tutorial > Dynamic Form Validation in Laravel with prohibited_if

Dynamic Form Validation in Laravel with prohibited_if

James Robert Taylor
Release: 2025-03-06 02:07:09
Original
821 people have browsed it

Dynamic Form Validation in Laravel with prohibited_if

Laravel's prohibited_if validation rule simplifies handling interdependent form fields. This rule elegantly restricts field inputs based on the values of other fields, enhancing dynamic form validation.

Understanding prohibited_if

The prohibited_if rule ensures specific fields remain empty if a condition is met. This is particularly useful for dynamic forms with interconnected fields.

Example:

use Illuminate\Support\Facades\Validator;

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

Real-World Application: Membership Registration

Consider a professional membership registration system:

<?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'
        ]);
    }
}
Copy after login

This example showcases:

  • Conditional field requirements based on membership_type.
  • Tax ID validation for US corporate members only.
  • Clear custom error messages.
  • Integration with other validation rules.

Extending with Multiple Conditions:

You can add multiple conditions:

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

prohibited_if allows for complex validation logic while maintaining code readability. This ensures your forms adapt to user input context effectively.

The above is the detailed content of Dynamic Form Validation in Laravel with prohibited_if. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template