Una de las ventajas de una página web es la posibilidad de poder navegar mediante enlaces. En esta lección aprenderemos cómo crear enlaces en Laravel utilizando los diferentes helpers que tenemos disponibles, como lo son url(), action() y route().

Repositorio

Ver el código de esta lección en GitHub

Suscríbete a nuestro boletín

Te enviaremos publicaciones con consejos útiles y múltiples recursos para que sigas aprendiendo.

Notas

Creando enlaces con el helper url()

El helper url() nos permite crear un enlace en nuestra vista:

<a href="{{ url('/usuarios/'.$user->id) }}">Ver detalle</a>

También podemos utilizar comillas dobles. De esta forma en lugar de concatenar podemos colocar directamente la propiedad $user->id:

<a href="{{ url("/usuarios/{$user->id}") }}">Ver detalles</a>

Al llamar al helper url() sin pasar ningún argumento, Laravel retornará una instancia del objeto Illuminate\Routing\UrlGenerator, con el que podemos tener acceso a diferentes métodos. Por ejemplo, el método previous() que nos devuelve la URL anterior:

<a href="{{ url()->previous() }}">Regresar</a>

Otros métodos disponibles son current() y full() con los que podemos tener acceso a la URL actual y la URL actual con la cadena de consulta (Query String):

url()->current(); // URL completa

url()->full(); // URL completa con la cadena de consulta

También podemos utilizar el alias y facade URL para acceder a estos métodos:

URL::current();

Dentro de una clase con nombre de espacio necesitarías importar el Facade: Illuminate\Support\Facades\URL

Creando enlaces con el helper action()

Con el helper action() también podemos crear URLs, pasando como argumento el nombre del controlador al cual queremos enlazar seguido de un arroba y el nombre de la acción dentro del controlador:

<a href="{{ action('UserController@index') }}">Regresar al listado de usuarios</a>

La ruta del controlador, por defecto, es relativa al nombre de espacio App\Http\Controllers.

También podemos utilizar el helper action() cuando necesitamos pasar un argumento a la URL. Esto lo logramos pasando como segundo argumento al helper un array asociativo con los parámetros que necesitamos pasar a la URL:

<a href="{{ action('UserController@show', ['id' => $user->id]) }}">Ver detalles</a>

Rutas con nombre

Podemos asignar un nombre a una ruta, encadenando el método name() a la declaración de la ruta. En este caso la primera ruta tendrá el nombre de users y la segunda users.show:

Route::get('/usuarios', 'UserController@index')->name('users.index');

Route::get('/usuarios/detalles/{id}', 'UserController@details')
    ->where('id', '[0-9]+')
    ->name('users.show');

Al hacer esto, ahora dentro de las vistas podremos hacer referencia al nombre de las rutas utilizando el helper route(), pasando como primer argumento el nombre de la ruta y como segundo argumento los parámetros de la ruta, tal como con la función action:

<a href="{{ route('users.show', ['id' => $user->id]) }}">Ver detalles</a>

Si estás pasando como argumento una llave primaria de un modelo de Eloquent, puedes pasar el modelo directamente a route(). El helper extraerá automáticamente dicha llave primaria:

<a href="{{ route('users.show', ['id' => $user]) }}">Ver detalles</a>

Material relacionado

Únete a nuestra comunidad en Discord y comparte con los usuarios y autores de Styde, 100% gratis.

Únete hoy

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.

Lección anterior Detalles o Perfil de Usuario con Laravel (Módulo CRUD) Lección siguiente Manejo de errores 404 en Laravel