Laravel offers a powerful validation system to ensure incoming data meets your application's requirements before processing it.
public function store(Request $request): RedirectResponse
{
$validated = $request->validate([
'title' => ['required', 'string', 'max:255'],
'body' => ['required', 'string'],
'email' => ['required', 'email', 'unique:users,email'],
'age' => ['required', 'integer', 'min:18'],
'image' => ['nullable', 'image', 'max:2048'],
]);
Post::create($validated);
return redirect()->route('posts.index')->with('success', 'Post created!');
}
'name' => 'required|string|max:100'
'email' => 'required|email|unique:users'
'password' => 'required|string|min:8|confirmed'
'age' => 'required|integer|between:18,100'
'website' => 'nullable|url'
'photo' => 'required|image|mimes:jpg,png|max:2048'
'role' => 'required|in:admin,editor,viewer'
'tags' => 'array'
'tags.*' => 'exists:tags,id'
<input name="title" value="{{ old('title') }}">
@error('title')
<p class="text-danger">{{ $message }}</p>
@enderror
{{-- Display all errors at once --}}
@if ($errors->any())
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
@endif