Laravel 8 Controladores y propiedad namespace
Y por qué no?
Muy buenas a todo el que lea estas lineas. Desde hace tiempo vengo analizando la posibilidad de compartir con ustedes todo lo que he aprendido. La verdad que hasta estoy un poco decepcionado de la poca ayuda que nos brindamos las comunidades latinas respecto a desarrollo, evidentemente seguimos siendo muy unipersonales y nos cuesta compartir la sabiduría adquirida.
Me gustaría poder hablar de mucho más pero me hallo limitado en conocimientos, sepan que mis disciplinas son bien marcadas con PHP, Laravel, Alpine, JQuery, Livewire y muy poco de React y Vue. En tiempos prehistóricos también Java. Opinen lo que quieran de PHP, pero soy un convencido de que Laravel a revitalizado al lenguaje por unos años más.
La intención es sencilla, volcar las banalidades de la programación que nos relantizan, y terminan siendo cosas de soluciones rápidas, pero para el que esta aprendiendo le pueden llevar horas, días o hasta semanas resolverlas, además de tener que buscar por la web en páginas con dialectos distintos al español, he llegado a traducir (muy mal con Google) páginas rusas o chinas para ver si encuentro algo de valor a lo que busco. Asi que vamos a ello con el primer post de este año que se viene con mucha ayuda para mis futuros seguidores.
Por qué Laravel?
La respuesta es sencilla, Laravel soluciona todos los problemas que aquejan a programadores y resuelve muchas cosas que requieren tiempo y esfuerzo y siempre son la misma monserga. Laravel nos ofrece un paquete de autenticación bien definido para web o API, integración de mucha variedad de paquetes, Livewire para escapar de Java Script(si, ya lo oyeron, podemos escapar de JS con Laravel+Livewire), en fin un framework con muchos dotes que nos deja enfocarnos en el diseño del negocio y la lógica de nuestro software. Como me dijo un allegado, si Laravel estuviera en Python, pues a usar Python, para entregar los trabajos, ya que no es en si el uso del lenguaje si no el framework el que le da vida al mismo.
Al día de hoy, Laravel 8 ha mejorado muchísimo con respecto a sus antepasados. Hoy vamos a ver un temilla muy particular que me ocurrió el otro día, pareciendo una banalidad pero siendo un quebradero de cabeza para el que recién se muda a la versión 8 de este Framework.
Escenario previo y solución
Una de las virtudes de Laravel es el manejo de rutas, prácticamente tenemos que definir la URI que va a utilizar la ruta, el metodo del controlador y el controlador al que se va a llamar, asignar middlewares y hasta le podemos dar un nombre a la ruta.
/*Esta ruta define un metodo http GET, a la ruta articulos->crear,
la cual va usar el metodo'crear_modificar' del controlador Articulos,
además va a validar con el middleware auth si el usuario esta
logueado y por ultimo va a usar el nombre de ruta 'articulos.crear'*/
Route::get('/articulos/crear' , 'ArticulosController@crear_modificar')
->middleware('auth')
->name('articulos.crear');
Hasta aqui, una maravilla! Bien, cuando comenzé a usar Laravel 8, esto no andaba. Recurrir a google fue la opción y encontre esto.
Laravel 8 deshabilita en el archivo RouteServiceProvider.php
(buscarlo en la carpeta Providers) la propiedad $namespace
, la cual inicializada asigna por defecto el namespace de los controladores para funcionar, eso se debe a que Laravel 8 usa Livewire(pronto les traere super tutoriales de Livewire) y requiere que los namespace funcionen independientemente de esta propiedad. Si quieren usar las rutas como antes, solo habiliten la propiedad y wala, las rutas vuelven a funcionar como antes. Sin embargo si quieres mantener el formato nuevo, debes hacer esto.
Route::get('/excel/{idCurso}/{tipoCurso}',[ MesasExportController::class,'export'])->name('export');
En este caso el Controlador se invoca dentro de un array y como segundo valor del array se indica el método a utilizar en la ruta, con este sencillo cambio nuestras rutas vuelven a funcionar nuevamente y sin tener que modificar nada del código original.
Espero que les sirva y puedan aprovechar este tip! Si quieren mas entradas con tips como este no dudes en dejarme un comentario aquí debajo!
Todos los sábados aportes nuevos!
