Laravel 10/9 Form Validation Example

Laravel 10/9 form validation example; Through this tutorial, i am going to show you how to validate and store form data in Laravel 10/9 applications.

How to Validate Form Data in Laravel 10/9

Follow the below given steps to create form and validate form data before save to database in Laravel 10/9 applications:

  • Step 1 – Install Laravel 10/9 Application
  • Step 2 – Configuring Database using Env File
  • Step 3 – Create Model & Migration File For Form
  • Step 4 – Create Routes
  • Step 5 – Creating Controller
  • Step 6 – Create Blade File For Form
  • Step 7 – Start Development Server
  • Step 8 – Run Laravel 10/9 Form Validation App On Browser

Step 1 – Install Laravel 10/9 Application

In step 1, open your terminal and navigate to your local web server directory using the following command:

//for windows user
cd xampp/htdocs

//for ubuntu user
cd var/www/html

Then install laravel latest application using the following command:

composer create-project --prefer-dist laravel/laravel LaravelFormValidation

Step 2 – Configuring Database using Env File

In step 2, open your downloaded laravel app into any text editor. Then find .env file and configure database detail like following:

DB_USERNAME=db user name
DB_PASSWORD=db password

Step 3 – Create Model & Migration File For Form

In step 3, open command prompt and navigate to your project by using the following command:

cd / LaravelFormValidation

Then create model and migration file by using the following command:

php artisan make:model Post -m

The above command will create two files into your laravel form validation application, which is located inside the following locations:

  • LaravelForm/app/Models/Post.php
  • LaravelForm/database/migrations/create_posts_table.php

So, find create_posts_table.php file inside LaravelForm/database/migrations/ directory. Then open this file and add the following code into function up() on this file:

    public function up()
        Schema::create('posts', function (Blueprint $table) {

Now, open again your terminal and type the following command on cmd to create tables into your selected database:

php artisan migrate

Step 4 – Create Routes

In step 4, open your web.php file, which is located inside routes directory. Then add the following routes into web.php file:


use Illuminate\Support\Facades\Route;
use App\Http\Controllers\PostController;

| Web Routes
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!

Route::get('/', function () {
    return view('welcome');

Route::get('form', [PostController::class, 'index']);
Route::post('store-form', [PostController::class, 'store']);

Step 5 – Creating Controller

In step 5, create form controller by using the following command:

php artisan make:controller PostController

The above command will create PostController.php file, which is located inside LaravelForm/app/Http/Controllers/ directory.

The following laravel validation rules will validate form data before store into database in laravel:

        $validatedData = $request->validate([
          'title' => 'required|unique:posts|max:255',
          'description' => 'required',

So open PostController.php file and add the following code into it:


namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Post;

class PostController extends Controller
    public function index()
        return view('form');

    public function store(Request $request)
        $validatedData = $request->validate([
          'title' => 'required|unique:posts|max:255',
          'description' => 'required',

        $post = new Post;

        $post->title = $request->title;
        $post->description = $request->description;


        return redirect('form')->with('status', 'Blog Post Form Data Has Been inserted');


Step 6 – Create Blade File For Form

In step 6, create new blade view file that named add-blog-post-form.blade.php inside resources/views directory for add blog post form.

The following code display error message in laravel forms. So do not forget to add the following code along laravel forms fields:

              <div class="alert alert-danger mt-1 mb-1">{{ $message }}</div>

Don’t worry i have already added the validation error message display code along with each form fields.

So, you can add the following php and html form code into add-blog-post-form.blade.php:

<!DOCTYPE html>
	<title>How to Validate Form Data in Laravel 10/9</title>
	<meta name="csrf-token" content="{{ csrf_token() }}">

	<link rel="stylesheet" href="">


<div class="container mt-4">

    <div class="alert alert-success">
        {{ session('status') }}

  <div class="card">
    <div class="card-header text-center font-weight-bold">
      <h2>Laravel 10/9 Form Validation Example Tutorial</h2>
    <div class="card-body">
      <form name="add-blog-post-form" id="form" method="post" action="{{url('store-form')}}">

        <div class="form-group">
          <label for="exampleInputEmail1">Title</label>
          <input type="text" id="title" name="title" class="@error('title') is-invalid @enderror form-control">
              <div class="alert alert-danger mt-1 mb-1">{{ $message }}</div>

        <div class="form-group">
          <label for="exampleInputEmail1">Description</label>
          <textarea name="description" class="@error('title') is-invalid @enderror form-control"></textarea>
              <div class="alert alert-danger mt-1 mb-1">{{ $message }}</div>

        <button type="submit" class="btn btn-primary">Submit</button>

Step 7 – Start Development Server

Finally, open your command prompt again and run the following command to start development server for your laravel 8 form application:

php artisan serve

Step 8 – Run Laravel 10/9 Form Validation App On Browser

In step 8, open your browser and fire the following url into your browser:

Recommended Laravel Tutorials

Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *