Organiza tus rutas en Laravel

Cuando empezamos a trabajar con Laravel, hay que admitir que unas de las características favoritas es la manera tan fácil en el que podemos crear nuestras rutas amigables. Pero a medida que nuestra aplicación va creciendo vemos que este archivo que tanto queremos se va poniendo cada vez mas monstruoso, y empezamos a sentir un peso en nuestra conciencia porque ya nuestro archivo de rutas no se ve «elegante».

Es por ello que es muy común dentro de nuestro Slack (donde por cierto, aprovecho de invitarte si aun no te has unido) las preguntas: ¿Como debo organizar mis rutas en Laravel? ¿Cual es la mejor manera de colocar las rutas? ó ¿Como puedo mejorar mi organización dentro del archivo de rutas?.

Para responder estas interrogantes no te podemos dar una única respuesta, ya que simplemente depende de ti y la organización que lleves, pero podemos darte algunos tips.

  • Organizar tus rutas en distintas carpetas y/o archivos.
  • Utilizar Rutas del Tipo Ressource cada vez que se pueda.
  • Utilizar Grupos de Rutas.
  • Siempre colocarle nombres a las rutas

Organizar tus Rutas en distintas carpetas y/o archivos

seleccion_004A partir de las versiones superiores a Laravel 5.3 las rutas ya se encuentran dentro de una carpeta llamada routes la cual nos separa en tres archivos distintos las rutas que antes inicialmente teníamos en routes.php, de tal manera que quedaron web.php para nuestras rutas de siempre, api.php si nuestra aplicación cuenta con rutas para API y console.php para registrar los comandos.

Si utilizas una versión inferior a 5.3, donde solo hay un archivo de routes.php mi primera recomendación es que crees tu propia carpeta de rutas dentro de app/Http. Luego de esto, dependiendo de lo grande que sea tu proyecto y el nivel de organización que quieras, puedes crear Subcarpetas o directamente  archivos con el nombre relativo a la zona de tu proyecto (por ejemplo indicando algún módulo, o parte de la aplicación de referencia).

En nuestro archivo de rutas, podemos utilizar cualquier función de PHP que tengamos disponible, es por ello que fácilmente para llamar los archivos nos podemos utilizar require como te muestro en el siguiente ejemplo dentro de mi archivo routes.php (o web.php en Laravel 5.3):

Nota: ‘__DIR__’ es utilizado para obtener el Directorio del fichero.

 

Luego, dentro de cada archivo estarán las declaraciones de las rutas.

Por ejemplo en el archivo LogViewer.php tengo:

Utilizar Rutas del Tipo Ressource cada vez que se pueda.

El Uso de Rutas del tipo ressource nos ayuda a reducir lineas de código además de ofrecernos un estándar para nuestras rutas, podemos ver la documentación de aqui. Esto nos evita crear manualmente rutas para los típicos CRUD. Ejemplo:

Lo cual nos crearía las rutas para index, create, store, edit, update y destroy, podemos jugar con las distintas configuraciones y adaptarlas a nuestro gusto.

Utilizar Grupos de Rutas.

Otra manera de simplificar nuestro archivo de Rutas es mediante la función Route::group() en la cual podemos agrupar las rutas que contengan elementos relacionados, ya sean Namespace, Middlewares, entre otros.

Para trabajar con los grupos de rutas solo debemos ubicamos en el primer argumento un array con los atributos que comparten las rutas que están dentro de él. Podemos ver la documentacion en este enlace.

En el siguiente ejemplo, podemos observar como utilizar un grupo de rutas que comparten los cuatro atributos que podemos colocar dentro del array, pero la idea es jugar con ello y organizar mejor nuestras rutas:

Cabe destacar que dentro de un grupo de rutas, puede ir declarado otro grupo más.

Siempre colocarle nombres a las rutas

Esto forma parte de una buena práctica a la hora de crear rutas, uno de los beneficios que trae la colocación de nombre en las rutas es que aunque la URL varie, si utilizamos el helper de route(‘nombre.ruta’) no habría necesidad de cambiar el código.

Por último, cierro recordando que nuestra interfaz de comandos favorita Artisan, nos provee de un método para listar todas las rutas de nuestro proyecto, el cual podemos utilizar con el comando:

Y en tal caso de que solo queramos listar las rutas que en su nombre contenga una palabra, fácil podemos pasarle parámetros a este comando, asi es, lo podemos hacer tipeando en nuestra consola.

Lo cual nos filtraría nuestro listado, en cuya información podemos ver el Dominio, Método Http, URI, Nombre de la Ruta, Action y Middleware. Nos ayuda bastante para saber si tenemos todo bien en nuestro enrutamiento.

Espero que esto te haya dado una idea de como poder organizar tus rutas de la mejor manera, y nos vemos en una próxima ocasión, puedes aportar nuevas ideas o maneras en que organizas tus rutas en los comentarios o a través de nuestro Slack, si aun no perteneces a nuestra comunidad puedes pedir una invitación desde aqui. Es totalmente gratuito.

 

 

 

Comparte este artículo

Entra en la discusión y deja tu comentario

Veces