Inicio » Curso de Laravel básico

Curso de Laravel básico

Creación de controladores

Capítulo 5 ➜ Creación de controladores

Creación de controladores para manejar la lógica de la aplicación.

Creación y renderizado de vistas. Uso de plantillas Blade para mejorar la legibilidad y reutilización del código HTML. Paso de datos a las vistas desde los controladores.

Los controladores en Laravel son una forma organizada de manejar la lógica de negocio y las solicitudes HTTP. Al separar la lógica de las rutas y moverla a los controladores, el código se vuelve más mantenible y fácil de escalar. En este capítulo, aprenderás cómo crear y gestionar controladores, qué tipos existen en Laravel y cómo utilizarlos para desarrollar aplicaciones web más estructuradas.

¿Qué es un controlador?

Un controlador es una clase que se encarga de manejar las solicitudes entrantes y devolver una respuesta al usuario. Los controladores ayudan a mantener la lógica de la aplicación separada de las rutas, haciendo que el código sea más claro y reutilizable.

Por ejemplo, en lugar de manejar la lógica directamente en la ruta: 

php

Route::get('/usuarios', function () { return User::all(); }); 

Es mejor delegar esta tarea a un controlador:

php

use App\Http\Controllers\UserController; 
Route::get('/usuarios', [UserController::class, 'index']); 

Crear un Controlador

Para crear un controlador en Laravel, se utiliza el Comando Artisan. Laravel proporciona un comando específico para generar controladores automáticamente.  

bash

php artisan make:controller NombreControlador 

 

Ejemplo:  

bash

php artisan make:controller UserController 

 

Esto creará un archivo UserController.php en el directorio app/Http/Controllers. El archivo de un controlador básico se verá así:  

php

<?php 
namespace App\Http\Controllers;
use Illuminate\Http\Request;

class UserController extends Controller {
 // 
} 

Controladores con Métodos Básicos

Puedes agregar diferentes métodos en un controlador para manejar diversas solicitudes HTTP.

Ejemplo de un controlador con varios métodos:

php
namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\Request;

class UserController extends Controller
{
    public function index()
    {
        $users = User::all();
        return view('usuarios.index', compact('users'));
    }

    public function show($id)
    {
        $user = User::findOrFail($id);
        return view('usuarios.show', compact('user'));
    }

    public function create()
    {
        return view('usuarios.create');
    }

    public function store(Request $request)
    {
        User::create($request->all());
        return redirect('/usuarios');
    }
}

En este ejemplo, el controlador UserController tiene cuatro métodos principales:

  • index(): Para mostrar todos los usuarios.
  • show(): Para mostrar un usuario específico.
  • create(): Para mostrar el formulario de creación.
  • store(): Para guardar un nuevo usuario en la base de datos.

Controladores RESTful

Laravel facilita la creación de controladores RESTful que siguen los principios de un diseño REST (Representational State Transfer). Un controlador RESTful maneja las operaciones básicas CRUD (Crear, Leer, Actualizar, Eliminar).

Para generar un controlador RESTful con Artisan, usa la opción --resource

bash

php artisan make:controller UserController --resource 

Este comando crea un controlador con los métodos necesarios para implementar todas las operaciones CRUD.

Ejemplo de un controlador RESTful: 

php

namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\Request;

class UserController extends Controller
{
    public function index()
    {
        // Listar todos los usuarios
    }

    public function create()
    {
        // Mostrar formulario para crear un nuevo usuario
    }

    public function store(Request $request)
    {
        // Guardar nuevo usuario en la base de datos
    }

    public function show($id)
    {
        // Mostrar un usuario específico
    }

    public function edit($id)
    {
        // Mostrar formulario para editar un usuario
    }

    public function update(Request $request, $id)
    {
        // Actualizar un usuario en la base de datos
    }

    public function destroy($id)
    {
        // Eliminar un usuario de la base de datos
    }
}

Este controlador sigue las convenciones RESTful y contiene los siguientes métodos:

  • index(): Para listar todos los recursos (usuarios).
  • create(): Para mostrar un formulario de creación.
  • store(): Para almacenar el nuevo recurso.
  • show(): Para mostrar un recurso en particular.
  • edit(): Para mostrar el formulario de edición.
  • update(): Para actualizar un recurso.
  • destroy(): Para eliminar un recurso.

Rutas para Controladores RESTful

Cuando usas un controlador RESTful, puedes definir todas las rutas relacionadas con este recurso de manera sencilla usando Route::resource.

Ejemplo: 

php

Route::resource('usuarios', UserController::class); 

Este comando crea automáticamente las siguientes rutas:

Método HTTP Ruta Acción del controlador
GET /usuarios index
GET /usuarios/create create
POST /usuarios store
GET /usuarios/{usuario} show
GET /usuarios/{usuario}/edit edit
PUT/PATCH /usuarios/{usuario} update
DELETE /usuarios/{usuario} destroy

Controladores Anidados

En algunas aplicaciones, es necesario trabajar con recursos anidados. Por ejemplo, si tienes usuarios que tienen publicaciones, podrías definir rutas para gestionar las publicaciones de un usuario específico.

Ejemplo de controladores anidados: 

php

Route::resource('usuarios.posts', PostController::class); 

Esto crea rutas para manejar las publicaciones de un usuario, como:

Método HTTP Ruta Acción del controlador
GET /usuarios/{usuario}/posts index
POST /usuarios/{usuario}/posts store
GET /usuarios/{usuario}/posts/{post} show
PUT/PATCH /usuarios/{usuario}/posts/{post} update
DELETE /usuarios/{usuario}/posts/{post} destroy

Controladores de un Solo Método (Single Action Controllers)

En algunas situaciones, un controlador puede tener solo una única acción, como el manejo de un formulario de contacto o una funcionalidad específica. En Laravel, puedes crear un controlador que tenga solo un método usando la magia del método __invoke().

Crear un controlador de acción única: 

bash

php artisan make:controller ContactController --invokable 

Esto creará un controlador con un solo método __invoke(). Al usar este tipo de controlador, no necesitas especificar el método en las rutas.

Ejemplo de ruta para un controlador de una sola acción: 

php

Route::get('/contacto', ContactController::class); 

 



1153 visitas


{ Curso de Laravel básico }


Compartir link con tus amigos

Codea Applications

México, Colombia, España, Venezuela, Argentina, Bolivia, Perú

© Copyright Codea::App Cursos de Programación Online | LATAM | 2020 - 2024