作業ノート

様々なまとめ、雑感など

Silexを試してみた(3) - URLを生成する

UrlGeneratorServiceProvider

Silexが提供するUrlGeneratorServiceProviderを使うとURLが生成できる。 Service ProviderとはSilex Applicationで再利用することを目的とした機能のこと。

Service Providerの登録

Silex\Applicationregisterメソッドで登録する。

$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パラメータとして表現される。

参考

関連