GlosarioArquitectura

¿Qué es Controller?

Los Controllers en Laravel son clases que agrupan la logica de manejo de peticiones HTTP, recibiendo las solicitudes del usuario y devolviendo respuestas como vistas, JSON o redirecciones.

Controllers

Los controladores organizan la logica de manejo de peticiones HTTP en clases dedicadas en lugar de definir toda la logica en los archivos de rutas. Agrupan peticiones relacionadas y mantienen el codigo organizado.

Tipos de controladores

// Controlador de recurso (CRUD completo)
php artisan make:controller PostController --resource
class PostController extends Controller
{
    public function index(): View
    {
        $posts = Post::published()->latest()->paginate(15);
        return view('posts.index', compact('posts'));
    }

    public function store(StorePostRequest $request): RedirectResponse
    {
        $post = Post::create($request->validated());
        return redirect()->route('posts.show', $post)
            ->with('success', 'Post creado correctamente.');
    }

    public function show(Post $post): View
    {
        return view('posts.show', compact('post'));
    }
}

Controlador invocable (single action)

class PublishPostController extends Controller
{
    public function __invoke(Post $post): RedirectResponse
    {
        $post->update(['published' => true, 'published_at' => now()]);
        return back()->with('success', 'Post publicado.');
    }
}

// En routes/web.php
Route::post('/posts/{post}/publish', PublishPostController::class);

Se recomienda mantener los controladores delgados, delegando la logica de negocio a services o actions. Un controlador no deberia tener mas de 5-7 metodos.