Laravel Validation

Laravel Validation

Laravel offers a powerful validation system to ensure incoming data meets your application's requirements before processing it.

1 - Validating in a Controller

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!');
}

2 - Common Validation Rules

'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'

3 - Displaying Errors in Blade

<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