Laravel 6

En esta lección te enseñaré cómo generar URLs absolutas utilizando algunos de los helpers que provee el framework Laravel.

Esta lección incluye un video premium

Regístrate para ver este video y cientos de lecciones exclusivas.

Mira el código en GitHub: actual, resultado, comparación.

Generar URLs con el helper url

Con Laravel podemos generar URLs absolutas utilizando el helper url, la ventaja de utilizar esta función por sobre colocar las URLs estáticas es que Laravel se encargará de completar el esquema y el host de tu aplicación de forma automática, por ejemplo, si agregamos las URLs al menú usando {{ url('/') }} y {{ url('notas/crear') }} y recargamos la página usando el host http://curso-laravel-styde.local podremos ver que las URLs generadas son:

  • http://curso-laravel-styde.local/
  • http://curso-laravel-styde.local/notas/crear

Pero si inicias el servidor de Laravel con php artisan serve y abres http://127.0.0.1:8000/ podrás ver las URLs:

  • http://127.0.0.1:8000/
  • http://127.0.0.1:8000/notas/crear

Esta es la ventaja de generar las URLs con Laravel versus dejar las URLs estáticas.

Por cierto, todo lo que está entre las llaves de Blade es una expresión de PHP, por lo tanto podemos utilizar variables para generar URLs un poco más dinámicas. Por ejemplo dentro del loop para iterar las notas podemos agregar el siguiente link:

<!-- HTML -->
<a href="{{ url("notas/{$loop->iteration}/editar") }}">

Blade nos pone a disposición la variable $loop dentro de la directiva @foreach la cual contiene información de cada iteración, por ejemplo la propiedad iteration nos devuelve el número de cada iteración comenzando con 1. Este código lo reemplazaremos luego por el ID de cada nota.

Recuerda que el HTML anterior es equivalente a escribir:

<!-- HTML -->
<a href="<?php echo e(url("notas/{$loop->iteration}/editar")) ?>">

Algunos programadores cometen el error de escribir: {{ url("notas/{{ $loop->iteration }}/editar") }} lo cual no es válido, recuerda: lo que está dentro de las llaves es una expresión de PHP y no tiene la sintaxis de Blade.

Generar URLs con el helper route

Otra ventaja es que podemos generar URLs con el helper route que acepta como primer argumento el nombre de la ruta y como segundo argumento los parámetros dinámicos de la ruta, en caso de que los tenga.

Para poder utilizar el helper route necesitamos agregarle un nombre a nuestras rutas:

<?php

Route::pattern('id', '\d+');

Route::get('/', function () {
    $notes = [
        //...
    ];

    return view('notes', ['notes' => $notes];
})->name('notes.index');

Route::get('notas/{id}', function ($id) {
    return 'Aquí veremos los detalles de la nota: '.$id;
})->name('notes.show');

Route::get('notas/crear', function () {
    return view('add-note');
})->name('notes.create');

Route::get('notas/{id}/editar', function ($id) {
    return 'Aquí podremos editar la nota: '.$id;
})->name('notes.edit');

Ahora que cada ruta tiene un nombre podemos generar las URLs con el helper route en nuestras vistas:

<!-- layout.blade.php -->
<li class="nav-item active">
    <a class="nav-link" href="{{ route('notes.index') }}">Notas<span class="sr-only">(current)</span></a>
</li>
<li>
    <a class="nav-link" href="{{ route('notes.create') }}">Nueva nota</a>
</li>
<!-- notes.blade.php -->
<a href="{{ route('notes.show', ['id' => $loop->iteration]) }}">
    {{ $note }}
</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 Layouts con Laravel 6 y Blade Lección siguiente Creación de tablas con el sistema de migraciones en Laravel 6