Gestión de Artículos en Laravel: Rutas, Controladores y Vistas

Clase 21 de 37Curso de Introducción a Laravel 6

Resumen

¿Cómo trabajar con la parte administrativa de un proyecto en Laravel?

Gestión eficiente de un proyecto necesita tanto la configuración de su componente público como la administración privada. En esta sección, abordaremos cómo crear y configurar rutas y controladores que faciliten la administración de artículos de manera ordenada y segura.

¿Cuál es el primer paso al crear rutas en Laravel?

Antes de empezar a desarrollar funcionalidades es crucial establecer rutas eficientes. Al trabajar en el módulo de Artículos, se debe iniciar creando una ruta tipo recurso. Una ruta tipo recurso permite generar automáticamente varias acciones como mostrar, crear, editar y eliminar desde un solo controlador.

Route::resource('articulos', 'ArticuloController');

Este tipo de ruta se configura rápidamente y es muy eficiente para mantener el orden y escalabilidad del proyecto.

¿Cómo organizar el código dentro de carpetas?

Para mantener un proyecto limpio se recomienda segmentar los archivos en directorios lógicos. En este caso, la idea es separar lo público de lo privado:

  • Contenido Público: Se mantiene fuera de la carpeta 'Backend'.
  • Contenido Privado: Se aloja dentro de una carpeta 'Backend'.

Al aplicar el comando para crear un controlador con el nombre específico y asociarlo a la arquitectura de Laravel, se logra un orden claro:

php artisan make:controller Backend/ArticuloController --resource

Este enfoque no solo simplifica el mantenimiento, sino que aumenta la legibilidad para equipos que trabajen múltiples aspectos del mismo proyecto.

¿Cómo proteger rutas en Laravel?

Proteger rutas es un paso esencial para asegurar la seguridad del sitio web. Al definir la ruta para la sección de administración, se debe utilizar un middleware que asegure que solo usuarios autenticados puedan acceder.

Route::middleware('auth')->group(function () {
    Route::resource('articulos', ArticuloController::class)->except('show');
});

Esto garantiza que el contenido administrativo es accesible únicamente después de que el usuario haya iniciado sesión.

¿Cómo listar y mostrar artículos en la vista Index?

El listado de artículos se implementa en el método index del controlador, que recupera los datos de forma descendente y los envía a la vista:

public function index()
{
    $articulos = Articulo::orderBy('id', 'desc')->get();
    return view('backend.articulos.index', compact('articulos'));
}

Esta técnica asegura que los datos más recientes se muestren primero, manteniendo la información relevante siempre visible.

¿Cómo se implementa el diseño de la tabla en la vista?

Dentro de la vista, la implementación de una estructura de tabla que despliegue los datos es necesaria. Acompañando al frontal con la biblioteca Bootstrap, facilita la estilización y funcionalidad:

<table class="table table-striped">
    <thead>
        <tr>
            <th>ID</th>
            <th>Título</th>
            <th>Acciones</th>
        </tr>
    </thead>
    <tbody>
        @foreach($articulos as $articulo)
        <tr>
            <td>{{ $articulo->id }}</td>
            <td>{{ $articulo->titulo }}</td>
            <td>
                <a href="{{ route('articulos.edit', $articulo->id) }}" class="btn btn-sm btn-primary">Editar</a>
                <form action="{{ route('articulos.destroy', $articulo->id) }}" method="POST">
                    @csrf
                    @method('DELETE')
                    <button type="submit" class="btn btn-sm btn-danger">Eliminar</button>
                </form>
            </td>
        </tr>
        @endforeach
    </tbody>
</table>

¿Cómo se utiliza el CSRF y los métodos en formularios?

Para salvaguardar los formularios de posibles ataques CSRF (Cross-site Request Forgery), Laravel ofrece un middleware que es esencial al trabajar en formularios que pueden modificar información sensible.

<form action="{{ route('articulos.destroy', $articulo->id) }}" method="POST">
    @csrf
    @method('DELETE')
    <!-- Botón de eliminar -->
</form>

El uso de @csrf inserta un token de seguridad, mientras que @method('DELETE') señala que la petición HTTP será de tipo DELETE, crucial al implementar un CRUD.

Este proceso no sólo protege la aplicación, sino que también establece las mejores prácticas al desarrollar y mantener proyectos seguros con Laravel, proporcionando así un entorno confiable y escalable.