Laravel Validation Rules
February 16, 2024
•
14 min read
Introduction
Laravel provides powerful validation capabilities to ensure data integrity. This guide covers built-in rules, custom validation, and best practices.
Basic Validation
// Basic controller validation
public function store(Request $request)
{
$validated = $request->validate([
'title' => 'required|string|max:255',
'email' => 'required|email',
'age' => 'required|integer|min:18',
]);
// Validation passes...
}
Built-in Validation Rules
'name' => 'required|string|min:2|max:100',
'email' => 'required|email|unique:users',
'age' => 'required|integer|min:18|max:120',
'password' => 'required|string|min:8|confirmed',
'url' => 'nullable|url',
'file' => 'required|file|mimes:jpg,png|max:2048',
'image' => 'image|max:1024',
'date' => 'date|after:today',
'start_date' => 'date|before:end_date',
'role' => 'in:admin,user,guest',
'status' => 'boolean',
'quantity' => 'numeric|min:0',
'price' => 'decimal:2|min:0',
'username' => 'alpha_num|starts_with:user_',
'phone' => 'regex:/^[0-9\-\+\s]+$/',
Form Requests
// php artisan make:request StoreUserRequest
// app/Http/Requests/StoreUserRequest.php
class StoreUserRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users',
'password' => 'required|string|min:8|confirmed',
];
}
}
// Controller usage
public function store(StoreUserRequest $request)
{
// Validation passed
}
Custom Validation Rules
// Using Rule class
use Illuminate\Validation\Rule;
$validator = Validator::make($data, [
'role' => [
'required',
Rule::in(['admin', 'editor', 'viewer']),
],
]);
// Custom Rule class
// php artisan make:rule Uppercase
// Rule class
class Uppercase implements Rule
{
public function passes($attribute, $value): bool
{
return strtoupper($value) === $value;
}
public function message(): string
{
return 'The :attribute must be uppercase.';
}
}
// Usage
'name' => ['required', new Uppercase()],
Summary
Laravel's validation system is comprehensive and flexible. Use form requests for reusable validation and custom rules for complex logic.
For more Laravel tutorials, see Middleware & Authentication.