Invokable Controllers with One Specific Action

Às vezes, você precisa criar um controlador que não abrange todos os métodos resourcefull, como index(), create(), store(), etc.

Você só precisa de um controlador que faça uma única coisa e está com dificuldades para nomear esse método. Não se preocupe mais, existe o método __invoke().

Desde o Laravel 5.6, você pode criar um controlador com apenas um método __invoke():

namespace App\Http\Controllers;

use App\User;
use App\Http\Controllers\Controller;

class ProfileController extends Controller
{
    public function __invoke($id)
    {
        return view('user.profile', ['user' => User::findOrFail($id)]);
    }
}

Como você pode ver, também é possível passar um parâmetro para o id.

Para chamar esse método mais Controller, em suas rotas/routes/web.php, você deve ter o seguinte código:

Route::get('user/{id}', 'ProfileController');

Você também pode gerar esse tipo de Controlador usando o seguinte comando do Artisan:

php artisan make:controller ProfileController --invokable

Espero que este tutorial seja útil para você.

0
Subscribe to my newsletter

Read articles from Fernando Bezerra directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Fernando Bezerra
Fernando Bezerra

Sou Full Stack e escritor amador entusiasmado por desenvolvimento de software. Compartilho meu entusiasmo pela tecnologia e complexidades do desenvolvimento através da escrita.