0
0
Laravelframework~5 mins

Single action controllers in Laravel

Choose your learning style9 modes available
Introduction

Single action controllers help keep your code simple by focusing on one job per controller. This makes your app easier to understand and maintain.

When you have a controller that only needs to handle one route or action.
When you want to keep your code clean and organized by separating different tasks.
When building small features that don't require multiple methods.
When you want to quickly create a controller for a single purpose like showing a page or processing a form.
Syntax
Laravel
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ExampleController
{
    public function __invoke(Request $request)
    {
        // Your code here
    }
}

The __invoke method is special in PHP and lets the controller be called like a function.

You don't need to define multiple methods; just one __invoke handles the action.

Examples
This controller shows a profile page when called.
Laravel
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ShowProfileController
{
    public function __invoke(Request $request)
    {
        return view('profile.show');
    }
}
This controller processes a form submission and redirects the user.
Laravel
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class SubmitFormController
{
    public function __invoke(Request $request)
    {
        // Process form data
        return redirect('/thank-you');
    }
}
Sample Program

This single action controller returns a simple welcome message when its route is accessed.

Laravel
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class WelcomeController
{
    public function __invoke(Request $request)
    {
        return response('Welcome to our site!');
    }
}
OutputSuccess
Important Notes

Register single action controllers in routes using the controller class name without specifying a method.

Example route: Route::get('/welcome', WelcomeController::class);

Single action controllers improve readability and reduce boilerplate code.

Summary

Single action controllers use the __invoke method to handle one action.

They keep your code focused and easier to maintain.

Use them when your controller only needs to do one thing.