Validate request input using inline rules or Form Request classes with custom error messages.
Requests and Validation
// Inline validation
$validated = $request->validate([
"name" => "required|string|max:255",
"email" => "required|email|unique:users",
"password" => "required|min:8|confirmed",
"age" => "required|integer|between:18,100",
"avatar" => "nullable|image|max:2048",
"role" => "required|in:admin,user,moderator",
]);
// Form Request class
php artisan make:request StorePostRequest
class StorePostRequest extends FormRequest {
public function authorize(): bool {
return auth()->check();
}
public function rules(): array {
return [
"title" => ["required", "max:255"],
"body" => ["required", "min:10"],
];
}
public function messages(): array {
return ["title.required" => "Post title is needed."];
}
}
// Use in controller
public function store(StorePostRequest $request) {
Post::create($request->validated());
}