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(), // ... ); }
書き方
コントローラ
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'}) }}
上の例では区切り文字に「>」、
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