Symfony2.1でBreadcrumbを簡単に書く方法

Symfony2.1でパンくずリストを簡単に書くために。whiteoctober / BreadcrumbsBundleを使用します。分かる範囲で解説します。

https://github.com/whiteoctober/BreadcrumbsBundle

インストール

Composer:

Composerを使用する場合、composer.jsonに以下の通り追加。Symfony2.1を使う場合は以下のように「 "2.1.x-dev"」となる。さらに↓に記入しているが、2.0は違う。

Symfony2.1x

"require": {
..
"whiteoctober/breadcrumbs-bundle": "2.1.x-dev"
..
},

symfony2.0x

"require": {
..
"whiteoctober/breadcrumbs-bundle": "master"
..
},

追加したらインストール

php composer.phar update

namespaceのoautoloadへの登録

Composerを使っているので、自動で書き込まれている。

AppKernel.phpへの登録

// app/AppKernel.php
public function registerBundles()
{
    return array(
        // ...
        new WhiteOctober\BreadcrumbsBundle\WhiteOctoberBreadcrumbsBundle(),
        // ...
    );
}

config.ymlに追加

最後にapp/config/config.phpを編集、以下のように追加。追加場所は一番下にでも。

white_october_breadcrumbs: ~

書き方

コントローラ
public function yourAction(User $user)
{
    $breadcrumbs = $this->get("white_october_breadcrumbs");
    // Simple example
    $breadcrumbs->addItem("Home", $this->get("router")->generate("index"));

    // Example without URL
    $breadcrumbs->addItem("Some text without link");

    // Example with parameter injected into translation "user.profile"
    $breadcrumbs->addItem($txt, $url, array("%user%" => $user->getName()));
}

引数

  • 第1引数:表示したい文字列
  • 第2引数:URL(絶対URL or 相対URL)
  • 第3引数:

流れとしては、breadcrumbsをとってきて、そいつにaddItemし続けるだけ。第1引数には表示したい文字列、第2引数にurlを指定する。urlは絶対URLでも相対URLでもどちらでも大丈夫。
注意点

  • 表示される順番はaddItemした順
  • Templateに$breadcrumbsを渡す必要なし
  • 最後にaddItemで追加した文字列には第2引数を指定してもリンクされない。
テンプレート(Twig)

以下のように追加するだけ。

{{ wo_render_breadcrumbs() }}

テンプレートオプション

{{ wo_render_breadcrumbs({separator: '>', listId: 'breadcrumbs'}) }}

上の例では区切り文字に「>」、

  • のidにbreadcrumbsを指定している。

    separator: デフォルトでは '/'
    listId: デフォルトは'wo-breadcrumbs'
    listClass: デフォルトは'breadcrumb'
    locale: defaults to null, so the default locale is used
    translation_domain: defaults to null, so the default domain is used