Mastering Laravel: Routing, Route Parameters, Named Routes, and Middleware

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

Laravel provides a clean, simple API for routing, enabling you to easily manage the routing of your web application. This article covers the fundamentals of Laravel routing, route parameters, named routes, and middleware, along with practical examples.

Table of Contents

  1. Introduction to Routing
  2. Route Parameters and Named Routes
  3. Middleware: Concepts and Implementation
  4. Sample Project Setup

1. Introduction to Routing

In Laravel, routing is the process of defining the paths that users can take through your application. The routes are defined in the routes/web.php file for web routes and routes/api.php for API routes.

Example: Defining Basic Routes

Create a simple route in routes/web.php:

// File: routes/web.php
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
return view('welcome');
});
Route::get('/about', function () {
return 'About Page';
});

In this example, we have defined two routes:

  • The root (/) route, which returns the welcome view.
  • The /about route, which returns a simple string "About Page".

2. Route Parameters and Named Routes

Route parameters allow you to capture values from the URL and pass them to your controller or closure. Named routes allow you to generate URLs or redirects to specific routes by name.

Example: Route Parameters

Define a route with parameters in routes/web.php:

// File: routes/web.php
Route::get('/user/{id}', function ($id) {
return 'User '.$id;
});
Route::get('/posts/{post}/comments/{comment}', function ($postId, $commentId) {
return "Post ID: $postId, Comment ID: $commentId";
});

In this example:

  • The /user/{id} route captures the id parameter from the URL.
  • The /posts/{post}/comments/{comment} route captures both post and comment parameters from the URL.

Example: Named Routes

Define named routes in routes/web.php:

// File: routes/web.php

Route::get('/user/profile', function () {
return 'User Profile';
})->name('profile');

// Generating URLs
$url = route('profile');

// Generating Redirects
return redirect()->route('profile');

In this example:

  • The /user/profile route is named profile.
  • We can generate a URL or redirect to the named route using route('profile') and redirect()->route('profile') respectively.

3. Middleware: Concepts and Implementation

Middleware provides a convenient mechanism for filtering HTTP requests entering your application. Laravel includes several middleware by default, including middleware for authentication and CSRF protection.

Example: Creating and Using Middleware

Create a new middleware using Artisan:

php artisan make:middleware CheckAge

Define the middleware logic in app/Http/Middleware/CheckAge.php:

// File: app/Http/Middleware/CheckAge.php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class CheckAge
{
public function handle(Request $request, Closure $next)
{
if ($request->age <= 200) {
return redirect('');
}
return $next($request);
}
}

Register the middleware in app/Http/Kernel.php:

// File: app/Http/Kernel.php
protected $routeMiddleware = [
// Other middleware
'check.age' => \App\Http\Middleware\CheckAge::class,
];

Apply the middleware to a route in routes/web.php:

// File: routes/web.php
Route::get('/dashboard', function () {
return 'Dashboard';
})->middleware('check.age');

In this example:

  • The CheckAge middleware redirects users to the home route if their age parameter is less than or equal to 200.
  • The middleware is applied to the /dashboard route.

4. 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 routing-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 and middleware.

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

php artisan serve

5. Testing the Routes

To test the routes, open your browser and navigate to the following URLs:

  1. Root Route: Visit http://localhost:8000/ to see the welcome view.
  2. About Route: Visit http://localhost:8000/about to see the "About Page" string.
  3. User Route with Parameter: Visit http://localhost:8000/user/1 to see "User 1".
  4. Posts and Comments Route with Parameters: Visit http://localhost:8000/posts/1/comments/2 to see "Post ID: 1, Comment ID: 2".
  5. Profile Named Route: Visit http://localhost:8000/user/profile to see "User Profile".
  6. Dashboard Route with Middleware: Visit http://localhost:8000/dashboard?age=201 to see "Dashboard". Visiting http://localhost:8000/dashboard?age=200 should redirect you to the home route.

Conclusion

Understanding Laravel routing, route parameters, named routes, and middleware is essential for building robust web applications. By following the examples provided, you can effectively manage the routing of your Laravel application and implement middleware to filter HTTP requests.

--

--

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