Laravel 9 form validation example tutorial. Through this tutorial, we will learn how to validate form data before store into MySQL database in laravel 9 apps.
Laravel 9 Form Validation Tutorial with Example
Use the following steps to validate and store form data into MySQL database in laravel 9 apps using server-side validation rules; as follows:
- Step 1 – Download Laravel 9 Application
- Step 2 – Condifugre Database with App
- Step 3 – Create Model & Migration
- Step 4 – Create Form Routes
- Step 5 – Create Form Controller By Artisan Command
- Step 6 – Create Form Blade File
- Step 7 – Run Development Server
Step 1 – Download Laravel 9 Application
First of all download or install laravel 9 new setup. So, open terminal and type the following command to install new laravel 9 app into your machine:
composer create-project --prefer-dist laravel/laravel FormValidation
Step 2 – Configure Database with App
In this step, setup database with your downloded/installed laravel 9 app. So, you need to find .env file and setup database details as following:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=database-name DB_USERNAME=database-user-name DB_PASSWORD=database-password
Step 3 – Create Model & Migration
In this step, open again your command prompt. And run the following command on it. To create model and migration file for form:
php artisan make:model Employee -m
After that, open create_employees_table.php file inside FormValidation/database/migrations/ directory. And the update the function up() with following code:
public function up() { Schema::create('employees', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email'); $table->string('contact_no'); $table->string('age'); $table->timestamps(); }); }
Then, open again command prompt and run the following command to create tables into database:
php artisan migrate
Step 4 – Create Form Routes
In this step, open web.php file from routes direcotry. And update the following routes into web.php file:
use App\Http\Controllers\FormController; Route::get('form', [FormController::class, 'index']); Route::post('store-form', [FormController::class, 'store']);
Step 5 – Create Form Controller By Artisan Command
In this step, run the following command on command prompt to create controller file:
php artisan make:controller FormController
After that, go to app/http/controllers and open FormController.php file. And update the following code into it:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Employee; class FormController extends Controller { public function index() { return view('form'); } public function store(Request $request) { $validatedData = $request->validate([ 'name' => 'required', 'email' => 'required|unique:employees|max:255', 'age' => 'required', 'contact_no' => 'required|unique:employees|max:255', ]); $emp = new Employee; $emp->name = $request->name; $emp->email = $request->email; $emp->age = $request->age; $emp->contact_no = $request->contact_no; $emp->save(); return redirect('form')->with('status', 'Form Data Has Been Inserted'); } }
Step 6 – Create Form Blade File
Now, create form blade view file to display form and submit to database. So, Go to resources/views and create form.blade.php and update the following code into it:
<!DOCTYPE html> <html> <head> <title>Laravel 9 Form Validation</title> <meta name="csrf-token" content="{{ csrf_token() }}"> <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <div class="container mt-4"> @if(session('status')) <div class="alert alert-success"> {{ session('status') }} </div> @endif <div class="card"> <div class="card-header text-center font-weight-bold"> <h2>Laravel 9 Form Validation</h2> </div> <div class="card-body"> <form name="employee" id="employee" method="post" action="{{url('store-form')}}"> {{ csrf_field() }} <div class="form-group"> <label for="exampleInputEmail1">Name</label> <input type="text" id="name" name="name" class="@error('name') is-invalid @enderror form-control"> @error('name') <div class="alert alert-danger mt-1 mb-1">{{ $message }}</div> @enderror </div> <div class="form-group"> <label for="exampleInputEmail1">Email</label> <input type="email" id="email" name="email" class="@error('email') is-invalid @enderror form-control"> @error('email') <div class="alert alert-danger mt-1 mb-1">{{ $message }}</div> @enderror </div> <div class="form-group"> <label for="exampleInputEmail1">Age</label> <input type="number" id="age" name="age" class="@error('age') is-invalid @enderror form-control"> @error('age') <div class="alert alert-danger mt-1 mb-1">{{ $message }}</div> @enderror </div> <div class="form-group"> <label for="exampleInputEmail1">Contact No</label> <input type="number" id="contact_no" name="contact_no" class="@error('contact_no') is-invalid @enderror form-control"> @error('contact_no') <div class="alert alert-danger mt-1 mb-1">{{ $message }}</div> @enderror </div> <button type="submit" class="btn btn-primary">Submit</button> </form> </div> </div> </div> </body> </html>
The following below code will display validation error message on blade view file:
@error('name') <div class="alert alert-danger mt-1 mb-1">{{ $message }}</div> @enderror
Step 7 – Run Development Server
Last step, open command prompt and run the following command to start developement server:
php artisan serve
Then open your browser and hit the following url on it:
http://127.0.0.1:8000/form
best tutorial ever, thanks for saving my life from trying to understand advanced laravel documentation.
It’s my pleasure 🙏 ☺️