Mastering Laravel: Form Handling and Validation

Nova Novriansyah
NovAI- PHP Laravel 101
3 min readJul 2, 2024

Handling forms and validating user input are crucial aspects of web application development. Laravel provides powerful tools for creating, managing forms, and validating data efficiently. This article explores how to handle forms, validate user input, and work with requests and responses in Laravel.

Table of Contents

  1. Introduction to Form Handling in Laravel
  2. Creating and Managing Forms
  3. Data Form Validation
  4. Using Request and Response
  5. Sample Project Setup
  6. Testing the Form

1. Introduction to Form Handling in Laravel

In Laravel, handling forms involves defining routes, creating HTML forms, processing form submissions, and validating user input. Let’s dive into each of these aspects.

Example: Defining Routes for Form Handling

Define routes in routes/web.php:

// File: routes/web.php
use Illuminate\Support\Facades\Route;

Route::get('/contact', [ContactController::class, 'showForm']);
Route::post('/contact', [ContactController::class, 'submitForm']);

In this example:

  • The GET route /contact displays the form using the showForm method of ContactController.
  • The POST route /contact processes the form submission using the submitForm method of ContactController.

2. Creating and Managing Forms

Create a form using Blade templates in resources/views/contact.blade.php:

<!-- File: resources/views/contact.blade.php -->
<form method="POST" action="/contact">
@csrf
<label for="name">Name:</label><br>
<input type="text" id="name" name="name" value="{{ old('name') }}"><br>
<label for="email">Email:</label><br>
<input type="email" id="email" name="email" value="{{ old('email') }}"><br>
<label for="message">Message:</label><br>
<textarea id="message" name="message">{{ old('message') }}</textarea><br>
<button type="submit">Submit</button>
</form>

3. Data Form Validation

Validate form data using Form Request validation in app/Http/Requests/ContactFormRequest.php:

// File: app/Http/Requests/ContactFormRequest.php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class ContactFormRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'name' => 'required|string|max:255',
'email' => 'required|email|max:255',
'message' => 'required|string',
];
}
}

4. Using Request and Response

Handle form submission and validation in app/Http/Controllers/ContactController.php:

// File: app/Http/Controllers/ContactController.php
namespace App\Http\Controllers;
use App\Http\Requests\ContactFormRequest;
use Illuminate\Http\Request;
class ContactController extends Controller
{
public function showForm()
{
return view('contact');
}
public function submitForm(ContactFormRequest $request)
{
// Process validated data
$validated = $request->validated();
// Additional processing logic
// E.g., save to database, send email, etc.
return 'Form submitted successfully!';
}
}

5. Sample Project Setup

To test the examples, follow these steps:

  1. Create a New Laravel Project: If you don’t already have a project, create one using Composer:
composer create-project --prefer-dist laravel/laravel form-validation-example

2. Setup Database and Environment: Update your .env file with your database credentials if needed.

3. Create Controller and Views: Follow the steps outlined above to create the routes, forms, and controllers.

4. Start the Server: Run the Laravel development server:

php artisan serve

6. Testing the Form

To test the form:

  • Open your browser and navigate to http://localhost:8000/contact.
  • Fill in the form fields and submit the form.
  • Validate that the form submission behaves correctly, including validation errors and successful submissions.

Handling forms and validating user input is a fundamental part of web development. Laravel simplifies this process with its powerful form handling and validation features. By following the examples provided, you can effectively manage forms, validate data, and enhance the user experience in your Laravel applications.

By mastering these Laravel features, you’ll be equipped to build robust and secure web applications that handle user input effectively.

--

--

Nova Novriansyah
NovAI- PHP Laravel 101

C|CISO, CEH, CC, CVA,CertBlockchainPractitioner, Google Machine Learning , Tensorflow, Unity Cert, Arduino Cert, AWS Arch Cert. CTO, IT leaders. Platform owners