Aprende Laravel: Rutas
Este artículo tiene más de un año de antigüedad, el contenido pudiera estar obsoleto.
Este es el segundo artículo de seis relacionado a como usar laravel por primera vez, en este artículo vamos a conocer lo básico del sistema de rutas de Laravel
Enrutamiento se trata de agregar rutas que permiten a las personas acceder a tu aplicación web. Sí, es tan simple como eso. Llamamos a esas rutas "routes" en inglés.
Rutas en Laravel
Laravel tiene una carpeta dedicada llamada "routes
", que alberga todos los diferentes tipos de rutas que existen en Laravel. Si revisas la carpeta de rutas de nuestra aplicación, verás 4 archivos de rutas. Primero, permíteme explicar esos archivos.
-
api.php
: Aquí es donde puedes definir las rutas de la API. Cada ruta definida aquí se prefija automáticamente con "api/
". Las rutas definidas aquí son sin estado (stateless).
Sin estado significa que no hay registro de la solicitud anterior y cada solicitud debe ser manejada únicamente en base a la información que la acompaña.
-
channels.php
: Aquí es donde puedes definir canales de transmisión para diferentes eventos en nuestra aplicación. -
console.php
: Aquí es donde puedes definir tus propios comandos de Artisan. Todos los comandos definidos aquí se basan en closures.
Básicamente, una closure en PHP es una función que se puede crear sin un nombre especificado, es decir, una función anónima.
-
web.php
: Aquí es donde puedes definir las rutas que tienen estado. Las rutas definidas aquí se basan en sesiones. Nos centraremos en este archivo durante toda esta serie.
Route Facade
El facade route
es quien realiza toda la magia dentro de los archivos api.php
y web.php
.
Todo el código que hace que el enrutamiento funcione se encuentra en el directorio illuminate/Routing/
, pero accedemos a él a través de la fachada / facade Illuminate\Support\Facades\Route
.
Ejemplos de rutas
Casi todos los métodos de ruta aceptan dos parámetros: la ruta y un callback (excepto algunos de ellos).
Tenemos una ruta home dentro del archivo web.php
que es parecida a esta:
1Route::get('/', function () {2 return view('welcome');3});
Como pueden ver, esta ruta en particular cumple con el enunciado anterior "una ruta y un callback". Esta es la ruta predeterminada definida en el archivo web.php. Esta ruta le indica a Laravel que muestre el archivo resources/views/welcome.blade.php
cuando alguien accede a nuestra URL base. El segundo parámetro es un callback, en este caso una función anónima.
Esta ruta también podemos escribirla de la siguiente forma:
1Route::view('/', 'welcome');
Para este ejemplo solo necesitamos dos cosas, la ruta y la vista que vamos a mostrar. También podemos pasar el nombre de un controlador y una función como callback que se encargará de la solicitud de esta forma:
1Route::get('/', 'HomeController@index');
En este ejemplo, la petición que se está ejecutando va a ser resuelta por el método index
del controlador HomeController
Hay diferentes formas de resolver una petición desde un controlador y eso lo veremos en un artículo específico de Controladores
Los parámetros de ruta
Pasando variables a través de la URL es algo común entre los desarrolladores y la forma más fácil de hacerlo es adjuntando una cadena de consulta a la URL, como esta: http://localhost?user_id=1
En Laravel, puedes adjuntar una variable a la URL sin la cadena de consulta tradicional.
Definir una ruta con parámetros es fácil. El parámetro que forma parte de una ruta debe estar dentro de un par de llaves y debe ser pasado como parámetro a la función de esta forma:
1Route::get('/{user_id}', function ($user_id) {2 return view('welcome');3});