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
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