Está en la página 1de 4

1/11/2018 Laraveles – Documentación de Laravel en español

Generación de URL
Introducción
Conceptos básicos
Generar URLs básicas
Acceder a la URL actual
URL de rutas con nombre
URLs a acciones de controladores
Valores por defecto

Introducción
Laravel incorpora varias funciones de asistencia en la generación de URLs. Por supuesto, son
principalmente útiles para la generación de enlaces en las vistas y respuestas API, o para generar
redirecciones a otra parte de la aplicación.

Conceptos Básicos

Generar URLs básicas


La función  url  se puede utilizar para generar URLs de la aplicación. Estas URLs utilizarán directamente
el esquema HTTP o HTTPS y host de la petición:

$post = App\Post::find(1);

echo url("/posts/{$post->id}");

// http://example.com/posts/1

Acceder a la URL actual


Si no se especifica un directorio a la función  url , se retornará una instancia
de  Illuminate\Routing\UrlGenerator , permitiendo acceder a información sobre la URL actual:

// Get the current URL without the query string...

echo url()->current();

https://docs.laraveles.com/docs/5.5/urls 1/4
1/11/2018 Laraveles – Documentación de Laravel en español

// Get the current URL including the query string...

echo url()->full();

// Get the full URL for the previous request...

echo url()->previous();

Cada uno de estos métodos se puede acceder también a través de  URL como facade:

use Illuminate\Support\Facades\URL;

echo URL::current();

URL de rutas con nombre


La función  route  genera URLs a rutas con nombre. Las rutas con nombre permiten generar URLs
desacopladas de la URL definida en la ruta. Por lo tanto, si la URL de la ruta cambia, no es necesario
modificar las llamadas a la función  route . Por ejemplo, imaginar una aplicación que contiene la
siguiente ruta:

Route::get('/post/{post}', function () {
//
})->name('post.show');

Para generar una URL a esta ruta se usaría la función  route  de este modo:

echo route('post.show', ['post' => 1]);

// http://example.com/post/1

A menudo se generarán URLs utilizando la clave primaria de un modelo Eloquent. Por esta razón, se
pueden pasar modelos Eloquent como parámetro. La función  route  extraerá directamente la clave
primaria del modelo:

echo route('post.show', ['post' => $post]);

URLs a acciones de controladores


https://docs.laraveles.com/docs/5.5/urls 2/4
1/11/2018 Laraveles – Documentación de Laravel en español

La función  action  genera una dirección URL para una acción determinada de un controlador. No se
necesita pasar el namespace completo del controlador. En vez de eso, hay que pasar el nombre de la
clase controller relativo al namespace  App\Http\Controllers :

$url = action('HomeController@index');

Si el método del controlador acepta parámetros de ruta, se pueden pasar como segundo argumento a
la función:

$url = action('UserController@profile', ['id' => 1]);

Valores por defecto


Para algunas aplicaciones, se pueden especificar valores por defecto para ciertos parámetros URL. Por
ejemplo, imaginar que muchas de las rutas definen un parámetro  {locale} :

Route::get('/{locale}/posts', function () {
//
})->name('post.index');

Es tedioso ir pasando  locale  cada vez que se llama a la función  route . Se puede utilizar el
método  URL::defaults  para definir un valor por defecto para este parámetro que será aplicado siempre
durante la petición actual. Se puede llamar a este método desde un route middleware (middleware de
ruta) por lo que se tendrá acceso a la petición actual:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\URL;

class SetDefaultLocaleForUrls

{
public function handle($request, Closure $next)

URL::defaults(['locale' => $request->user()->locale]);

return $next($request);

https://docs.laraveles.com/docs/5.5/urls 3/4
1/11/2018 Laraveles – Documentación de Laravel en español

}
}

Una vez que el valor por defecto para  locale  se ha establecido, no será necesario pasarlo más al
generar URLs a través del helper  route .

https://docs.laraveles.com/docs/5.5/urls 4/4

También podría gustarte