Controladores
El controlador en Laravel nos ayuda a separar nuestra aplicación en capas, siendo este como su nombre lo indica quien controla hacia donde debe ir nuestra aplicación cuando hacemos una petición o request como también se le llama, para poder dirigir los datos al lugar correcto nos ayudamos del router del framework.
Ya sabemos que las URLs amigables son una parte importante de la web en la actualidad por lo que debemos actuar en consecuencia y garantizar que nuestra aplicación pueda cumplir con estos requerimientos a fin que sea una página moderna y que sea amigable tanto al usuario como a los motores de búsqueda.
En Laravel crear una vista a partir de un controlador o desde el mismo router es algo muy sencillo que una vez que conocemos el concepto podremos manejar con bastante naturalidad.
Vista y Router
Antes de ver cómo crear el controlador debemos conocer cómo crear una vista utilizando solamente el Router, ya que esto nos ahorrará trabajo cuando debamos hacer vistas estáticas que solamente deben mostrar información, debemos utilizar todas las herramientas de nuestro framework para ahorrarnos trabajo y código.
Vamos primero a modificar el archivo /app/routes.php, por defecto en una instalación limpia nos encontraremos con lo siguiente:
Fácilmente podemos inferir que nos está enviando a una vista llamada hello, esta es la vista por defecto que nos indica que nuestra aplicación fue instalada correctamente, pero si ahora queremos darle un cambio podemos guiarnos de este mismo ejemplo y hacer la ruta de nuestro about:
Como vemos aquí le indicamos que al recibir la petición about debe generar una vista que tenga el mismo nombre, dicha vista va a estar ubicada en la ruta app/views/about.php. trabajar de esta forma es muy sencillo si entendemos la forma en que Laravel interpreta nuestras peticiones.
Controlador
Lo que vimos no es más que el preámbulo de lo que es capaz de hacer Laravel, que sucede si en vez de necesitar estas vistas, necesitamos un lugar donde agrupar varias acciones que dependen de las peticiones del usuario, puede ser un módulo de clientes, donde se permita realizar varios tipos de acciones, si lo hacemos con el método de router tendremos algo probablemente ilegible. Ahí es donde entra nuestro controlador agrupando todas estas acciones dándonos la oportunidad de hacer una mejor aplicación.
Para crear un controlador, simplemente en la ruta app/controllers vamos a crear un archivo que tenga el nombre del módulo y termine en Controller, por ejemplo PagesController y que luciría así:
Acá tenemos la acción contacto y dentro le decimos que debe generar una vista, ahora solo nos queda definir esto en nuestro router:
Route::get('contacto', [email="'Pages@contacto"]'Pages@contacto[/email]');Con esto cuando llamemos en nuestra aplicación a contacto, Laravel va a enrutar la petición directo a nuestro controlador quien se encargará de hacer que todo funcione adecuadamente.