Modularizar Rutas mediante funciones #Laravel - VENTAJAS!
Te quiero hablar aquí un poquito sobre cómo puedes modularizar tus rutas, ya que uno de los “problemas”, entre comillas, que podemos tener en Laravel son las benditas rutas.
Usualmente todas se encuentran definidas al mismo nivel, o la parte de agrupado no forma parte como tal de una organización clara, sino que responde a una necesidad específica, dependiendo de cómo quieras presentar un módulo.
Por ejemplo:
- Si un módulo está protegido, entonces colocas ciertas rutas.
- Si comienza con cierto patrón, colocas otras rutas.
- Si quieres ejecutar un middleware, agregas otro grupo de rutas.
Pero otra vez: esto no forma parte de una modularización real.
¿A qué me refiero con modularizar?
Me refiero a colocar las rutas directamente en módulos separados. Por ejemplo, en mi aplicación de academia (la web de academia que estás viendo acá), manejo algunas rutas, aunque prácticamente nada, porque es una aplicación en Vue, entonces todo lo maneja Vue.
Tengo el blog y la parte de gestión, lo que sería como tres módulos. Entonces, es ahí donde digo: “pudiéramos agrupar las rutas”.
Formas de modularizar rutas
Tenemos un par de formas para modularizar:
1 Dentro del mismo archivo
Es la forma más sencilla y la que le serviría a la gran mayoría. Simplemente defines funciones dentro del archivo de rutas. A veces esto se pasa por alto, pero recuerda que estamos en PHP, por lo tanto puedes usar cualquier cosa de PHP: funciones, clases, etc.
Aunque usar clases para esto me parece algo más rebuscado, con funciones ya funciona bastante bien.
Entonces, ¿qué hago yo? Defino funciones como rutasDashboard(), las agrupo ahí; rutasBlog(), las agrupo también, y luego defino dónde se van a emplear, por ejemplo en una condición if.
if (condición) {
rutasDashboard();
}
O mediante subdominios:
if (app()->environment('production')) {
// Uso el subdominio
Route::domain('dashboard.miapp.com')->group(function () {
rutasDashboard();
});
} else {
// Uso un prefijo en el path
Route::prefix('dashboard')->group(function () {
rutasDashboard();
});
}
2. Archivos separados
También puedes crear archivos independientes, por ejemplo:
- rutas_dashboard.php
- rutas_academia.php
- rutas_blog.php
Ahí defines tus rutas y luego las importas en tu archivo principal.
Esta opción es útil si tienes muchísimas rutas y ya se hace difícil leer o mantener todo en un solo archivo.
Conclusión
Entonces, recapitulando:
- Puedes modularizar rutas usando funciones dentro del mismo archivo.
- Si tienes muchas, puedes usar archivos separados.
- Puedes aprovechar condiciones para distinguir entre producción y local.
- Y puedes evitar la duplicación y el desorden agrupando las rutas de manera clara.
Acepto recibir anuncios de interes sobre este Blog.
Te muestro las ventajas que tiene de emplear funciones para definir tus rutas, lo cual, es muy util cuando quieras organizarlas, definir subdominios...
- Andrés Cruz