Silexを試してみた(3) - URLを生成する
UrlGeneratorServiceProvider
Silexが提供するUrlGeneratorServiceProviderを使うとURLが生成できる。 Service ProviderとはSilex Applicationで再利用することを目的とした機能のこと。
Service Providerの登録
Silex\Application
のregister
メソッドで登録する。
$app->register(new Silex\Provider\UrlGeneratorServiceProvider());
使い方
$app['url_generator']
にService Providerが登録されており、generate
メソッドを使ってURLを生成する。
$app->get('/', function(Application $app) {
$url1 = $app['url_generator']->generate('sample03-01');
$url2 = $app['url_generator']->generate('sample03-02', array('id' => 1));
$url3 = $app['url_generator']->generate('sample03-02', array('id' => 2, 'foo' => 'text'));
return <<<EOH
<ul>
<li><a href="$url1">sample03-01</a></li>
<li><a href="$url2">sample03-02 01</a></li>
<li><a href="$url3">sample03-02 02</a></li>
</ul>
EOH;
});
$app->get('/sample03-01', function(Application $app) {
return $app->escape($app['request']->getUri());
})
->bind('sample03-01');
$app->get('/sample03-02/{id}', function(Application $app) {
return $app->escape($app['request']->getUri());
})
->bind('sample03-02');
generate
メソッドの第一引数は、Silex\Application
インスタンスのbind
メソッドで
指定した文字列。第二引数に、そのURLのパラメータを設定する。
対象のパスにパラメータの指定があるときは、そこに値が割り振られる。ないときは、 GETパラメータとして表現される。
参考
- Providers - Documentation - Silex - The PHP micro-framework based on Symfony2 Components
- UrlGeneratorServiceProvider - Documentation - Silex - The PHP micro-framework based on Symfony2 Components