Loading episodes…
0:00 0:00

How to Create Custom Middleware in Laravel 11

00:00
BACK TO HOME

How to Create Custom Middleware in Laravel 11

10xTeam March 17, 2024 3 min read

Laravel 11 features invokable controllers, which provide a more concentrated way to managing individual actions within your application. This guide explains how to build and use these controllers, stressing their benefits and providing a practical example.

Advantages of Invokable Controllers:

  1. Enhanced Readability: With a single __invoke method, the controller’s purpose is clearly defined, facilitating code maintainability and comprehension.
  2. Reduced Complexity: By requiring less code, maintenance becomes easier, and the development process becomes more streamlined.
  3. Concise Routing: Directly referencing the controller class in Laravel 11 routes without specifying a method simplifies route definitions.

Creating an Invokable Controller in Laravel 11:

  1. Utilize the Artisan Command:
    • Open your terminal and navigate to the root directory of your Laravel 11 project.
    • Execute the following command, replacing ExampleControllerName with your desired name:
      php artisan make:controller ExampleControllerName --invokable
      

      This command generates a new controller class with the __invoke method, ready for customization.

  2. Structure the __invoke Method:
    • Open the generated controller file (typically located in app/Http/Controllers).
    • You’ll find the __invoke method already defined, where your controller’s logic resides.
    • Access the request object using the Request type hint:
      public function __invoke(Request $request)
      {
          // Your controller logic here
      }
      

      Implement the desired functionality within this method, utilizing Laravel features such as repositories, models, and validation as required.

  3. Define Routes:
    • In your routes file (usually routes/web.php), create a route corresponding to the desired URL:
      Route::get('/your-route', ExampleControllerName::class);
      

      Replace /your-route with the preferred URI and ExampleControllerName with the actual controller class name.

Example: Handling a Simple Form Submission with an Invokable Controller

// app/Http/Controllers/FormController.php

class FormController
{
    public function __invoke(Request $request)
    {
        $request->validate([
            'name' => 'required|string',
            'email' => 'required|email',
        ]);

        // Process the form data (e.g., save to database)

        return redirect('/success');
    }
}

// routes/web.php

Route::post('/submit-form', FormController::class);

By following these methods, you can design efficient and maintainable invokable controllers in Laravel 11, resulting in cleaner code and a more pleasant development experience.


Join the 10xdev Community

Subscribe and get 8+ free PDFs that contain detailed roadmaps with recommended learning periods for each programming language or field, along with links to free resources such as books, YouTube tutorials, and courses with certificates.

Audio Interrupted

We lost the audio stream. Retry with shorter sentences?