Form validation in web applications requires careful handling of interdependent fields. Laravel’s prohibited_if validation rule provides an elegant solution for conditionally restricting field inputs based on other field values. Let’s explore how to implement this powerful feature in your applications.
Understanding prohibited_if
The prohibited_if validation rule enables you to specify when certain fields must remain empty or absent based on specific conditions. This proves invaluable when building dynamic forms with interdependent fields.
use IlluminateSupportFacadesValidator;
$validator = Validator::make($request->all(), [
'freelance_company' => 'prohibited_if:type,individual',
'type' => 'required|in:individual,business'
]);
Real-World example of prohibited_if
Let’s implement a professional membership registration system with dynamic field requirements:
<?php
namespace AppHttpControllers;
use AppModelsMembership;
use IlluminateHttpRequest;
use IlluminateValidationRule;
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 should not be provided for personal memberships.',
'tax_id.prohibited_if' => 'Tax ID is only required for US-based corporate memberships.',
]);
Membership::create($request->validated());
return response()->json([
'message' => 'Membership created successfully'
]);
}
}
This implementation demonstrates:
- Dynamic field requirements based on membership type
- Conditional tax ID validation for US corporate members
- Custom error messages for clarity
- Combined usage with other validation rules
You can extend this further with 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',
]
The prohibited_if rule enables the creation of sophisticated form validation logic while maintaining clean, readable code. This approach ensures your forms handle user input appropriately based on context.
The post Dynamic Form Validation in Laravel with prohibited_if appeared first on Laravel News.
Join the Laravel Newsletter to get all the latest
Laravel articles like this directly in your inbox.
Source: Read MoreÂ