The RoutingServiceProvider provides a service for generating URLs for named routes.
Silex\Route
).routes
service. It has a generate
method, which takes the route name as an argument, followed by an array of
route parameters.1 | $app->register(new Silex\Provider\RoutingServiceProvider());
|
The Routing provider provides a url_generator
service:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $app->get('/', function () {
return 'welcome to the homepage';
})
->bind('homepage');
$app->get('/hello/{name}', function ($name) {
return "Hello $name!";
})
->bind('hello');
$app->get('/navigation', function () use ($app) {
return '<a href="'.$app['url_generator']->generate('homepage').'">Home</a>'.
' | '.
'<a href="'.$app['url_generator']->generate('hello', array('name' => 'Igor')).'">Hello Igor</a>';
});
|
When using Twig, the service can be used like this:
1 | {{ app.url_generator.generate('homepage') }}
|
Moreover, if you have twig-bridge
as a Composer dep, you will have access
to the path()
and url()
functions:
1 2 3 4 | {{ path('homepage') }}
{{ url('homepage') }} {# generates the absolute url http://example.org/ #}
{{ path('hello', {name: 'Fabien'}) }}
{{ url('hello', {name: 'Fabien'}) }} {# generates the absolute url http://example.org/hello/Fabien #}
|
Silex\Application\UrlGeneratorTrait
adds the following shortcuts:
1 2 | $app->path('homepage');
$app->url('homepage');
|