UrlGeneratorServiceProvider

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

Service Providerの登録

SilexApplicationregisterメソッドで登録する。

$app->register(new SilexProviderUrlGeneratorServiceProvider());

使い方

$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メソッドの第一引数は、SilexApplicationインスタンスの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

関連

  • Silexを試してみた(1) - きっかけとインストール - 作業ノート
  • Silexを試してみた(2) - 基本的なこと - 作業ノート
  • Silexを試してみた(3) - URLを生成する - 作業ノート
  • Silexを試してみた(4) - Twig - 作業ノート
  • Silexを試してみた(5) - Logging - 作業ノート
  • Silexを試してみた(6) - Doctrine DBAL - 作業ノート
  • Silexを試してみた(7) - その他と雑感 - 作業ノート