Saltar al contenido

Desde PHP 8, los atributos han revolucionado la forma de estructurar el código, permitiendo agregar metadatos directamente a clases y métodos. En Laravel, esta funcionalidad se combina perfectamente con el paquete Spatie Laravel Route Attributes, que permite definir rutas de forma declarativa y dinámica.

Este enfoque elimina la necesidad de registrar rutas manualmente en los archivos de rutas (web.php, api.php, etc.), haciendo que el código sea más legible, limpio y organizado. Además, ofrece opciones avanzadas como rutas RESTful con el atributo Resource.


Instalación

Para comenzar, instala el paquete con Composer:

sail composer require spatie/laravel-route-attributes

No necesitas configurar nada adicional ni ejecutar comandos manuales para registrar rutas; todo funciona automáticamente con la configuración predeterminada del paquete.


Definiendo Rutas Simples

El siguiente ejemplo muestra cómo definir rutas simples para manejar un formulario de contacto. Las rutas se declaran directamente en el controlador utilizando los atributos Get, Post y Prefix:

Rutas Generadas

Con esta configuración, se generan las siguientes rutas automáticamente:

Método

Ruta

Acción

Nombre de la Ruta

GET

/contact/form

index

contact.index

POST

/contact/form

submit

contact.submit


Definiendo Rutas RESTful con Resource

Si necesitas gestionar un conjunto completo de rutas para un controlador siguiendo el patrón RESTful, puedes usar el atributo Resource.

Por ejemplo, supongamos que estás desarrollando una API para manejar comentarios asociados a fotos:


¿Qué Hace el Parámetro shallow?

El parámetro shallow se utiliza para aplicar el anidamiento solo a las rutas que no tienen un identificador único del recurso hijo (como index, create o store). Esto significa que rutas como show, update o destroy, que requieren un identificador único, no incluirán el prefijo del recurso padre, simplificando las URLs.

Rutas Generadas con shallow: true

Con el parámetro shallow: true, las rutas generadas son:

Método

Ruta

Acción

Nombre de la Ruta

GET

/api/v1/photos/{photo}/comments

index

api.v1.photoComments.index

POST

/api/v1/photos/{photo}/comments

store

api.v1.photoComments.store

GET

/api/v1/comments/{comment:uuid}

show

api.v1.photoComments.show

PUT

/api/v1/comments/{comment:uuid}

update

api.v1.photoComments.update

DELETE

/api/v1/comments/{comment:uuid}

destroy

api.v1.photoComments.destroy

Esto hace que las rutas sean más legibles y fáciles de manejar, especialmente en APIs RESTful.


Ventajas del Uso de Atributos

  1. Código Más Limpio y Organizado
    Las rutas se declaran directamente en los controladores, eliminando la necesidad de registros manuales en archivos de rutas.

  2. Automatización Completa
    No es necesario ejecutar comandos adicionales ni configurar middlewares manualmente. El paquete gestiona todo automáticamente.

  3. Flexibilidad Avanzada
    Puedes personalizar nombres, middlewares, parámetros y mucho más directamente en los atributos.

  4. Optimización para APIs RESTful
    El soporte para Resource y shallow facilita la creación de APIs modernas y bien estructuradas.


Conclusión

Con spatie/laravel-route-attributes, gestionar rutas en Laravel es más simple, limpio y eficiente. Ya sea que trabajes con rutas simples o complejas APIs RESTful, este enfoque mejora la organización del código y reduce la probabilidad de errores.

Si aún no has probado este paquete, ¡es momento de modernizar tu forma de trabajar con rutas y aprovechar al máximo los atributos de PHP 8!


¿Listo para implementar esto en tu próximo proyecto? 🚀

school Curso completo

Curso Laravel 12
Completo 2026

El único curso 100% actualizado que incluye Laravel 12, Livewire 3, Vue 3, React 19 e Inertia 2. Aprende con proyectos reales y las últimas funcionalidades.

access_time 8 horas de contenido
layers 4 tecnologías en 1
update 100% actualizado
code Proyectos prácticos
Ver Curso Laravel 12 arrow_forward

star Incluido en cualquier suscripción

Rutas de aprendizaje