El proveedor UrlGeneratorServiceProvider
proporciona un servicio para poder generar URL a partir del nombre de la ruta.
A.14.1. Parámetros de configuración
Este proveedor no define ningún parámetro de configuración.
A.14.2. Servicios proporcionados
El proveedor proporciona los siguientes servicios:
url_generator
: se una instancia de la clase UrlGenerator y utiliza el objeto de tipo RouteCollection que proporciona el servicioroutes
. Este servicio dispone de un método llamadogenerate()
que genera la URL a partir del nombre de la ruta y de los parámetros indicados.
A.14.3. Cómo se registra el proveedor
El siguiente código muestra un ejemplo de cómo registrar este proveedor:
$app->register(new Silex\Provider\UrlGeneratorServiceProvider());
A.14.4. Ejemplos de uso
Genera las URL utilizando el servicio url_generator
que proporciona el proveedor, tal y como se muestra en el siguiente ejemplo:
$app->get('/', function () {
return 'Portada del sitio web';
})
->bind('portada');
$app->get('/hola/{nombre}', function ($nombre) {
return "Hola $nombre!";
})
->bind('hola');
$app->get('/menu', function () use ($app) {
return '<a href="'.$app['url_generator']->generate('portada').'">Inicio</a>'.
' | '.
'<a href="'.$app['url_generator']->generate('hola', array('nombre' => 'Igor')).'">Hola Igor</a>';
});
Desde dentro de una plantilla Twig, este servicio se utiliza de la siguiente manera:
{{ app.url_generator.generate('portada') }}
Si además utilizas el bridge de Twig, podrás utilizar las funciones path()
y url()
:
{{ path('portada') }}
{{ url('portada') }} {# genera la URL absoluta: http://ejemplo.org/ #}
{{ path('hola', {nombre: 'Fabien'}) }}
{{ url('hola', {nombre: 'Fabien'}) }} {# genera la URL absoluta: http://ejemplo.org/hola/Fabien #}
A.14.5. Traits
El trait Silex\Application\UrlGeneratorTrait
definido por este proveedor añade los siguientes atajos:
path
: genera una URL relativa.url
: genera una URL absoluta.
$app->path('portada');
$app->url('portada');