laravel-breadcrumbs でパンくずリストを作成
はじめに
davejamesmiller/laravel-breadcrumbs を使って、Laravel でパンくずリストを作成する方法を調べた。
TL;DR
composer require davejamesmiller/laravel-breadcrumbs
でインストールroutes/breadcrumbs.php
でパンくずリストの定義- リスト名、親階層、表示内容とリンク先 を指定
Breadcrumbs::render('list_name')
でパンくずリストの描画@section
,@yield
と組み合わせると便利
目次
環境・条件
1 | $ grep -i pretty /etc/os-release |
詳細
セットアップ
composer
でインストール
※1. Install Laravel Breadcrumbs
1 | $ composer require davejamesmiller/laravel-breadcrumbs |
artisan
でコンフィグファイル生成。デフォルトで Bootstrap 4 のパンくずリスト のスタイルに合うものが利用されているので、変更の必要がなければスキップ可。
※3. Choose a template
1 | $ php artisan vendor:publish --tag=breadcrumbs-config |
config/breadcrumbs.php
が生成されるので、独自のパンくずリストを使用する場合は view
を変更。'partials.breadcrumbs'
にすると resources/views/partials/breadcrumbs.blade.php
が使われる。
※Update the config
1 | - 'view' => 'breadcrumbs::bootstrap4', |
パンくずリストの定義
routes/breadcrumbs.php
でパンくずリストを定義する。
定義方法は「リスト名」「親階層」「表示内容とリンク先」をセットで指定。
※2. Define your breadcrumbs
1 | // routes/breadcrumbs.php |
↑の定義を行うと、view ファイルにて Breadcrumbs::render('list name')
でパンくずリストを表示できる。
リストの名前は displayed name
となり、リンク先は route('breadcrumbs')
となる。なお、リンクは下層ページでのみ有効となる。
下層を定義(階層を追加)するには $trail->parent('parent list name')
を利用する。
1 | // routes/breadcrumbs.php |
↑の定義後、view ファイルにて Breadcrumbs::render('children')
とすると、 displayed name / children
のようなパンくずリストが表示され、route('breadcrumbs')
の示すリンクが displayed name
の部分に張られる。
引数や動的な内容の表示もできる。
1 | // routes/breadcrumbs.php |
独自パンくずリスト
config/breadcrumbs.php
の view
に指定した箇所に、 view ファイルを作成する。
'view' => 'partials.breadcrumbs',
なら resources/views/partials/breadcrumbs.blade.php
。
1 | @if (count($breadcrumbs)) |
基本的に使うのは url
と title
で、必要に応じて $data
(Custome data) も利用可能。
※In the view (template) - API Reference
レイアウトファイルで利用
With Blade layouts and @section
resources/views/layouts/xxxx.blade.php
で @yield('breadcrumbs')
としておき、
1 | <div> |
各 view ファイルで @section('breadcrumbs', Breadcrumbs::render('xxxx'))
とすると、良い感じにパンくずリストを扱える。
1 | @section('breadcrumbs', Breadcrumbs::render('list name')) |
Tips
自動選択
Output breadcrumbs in your layout
Breadcrumbs::render()
や Breadcrumbs::generate()
で、ルーティングに合うリストが自動で出力されるっぽい?(未確認)
1 | {{ Breadcrumbs::render() }} |
Implicit binding
Implicit binding していると、パンくずリストでも同じように injection してくれるっぽい。(未確認)
1 | // routes/web.php |
まとめ
composer require davejamesmiller/laravel-breadcrumbs
でインストールroutes/breadcrumbs.php
でパンくずリストの定義- リスト名、親階層、表示内容とリンク先 を指定
Breadcrumbs::render('list_name')
でパンくずリストの描画@section
,@yield
と組み合わせると便利
参考文献
- davejamesmiller/laravel-breadcrumbs: Laravel Breadcrumbs - A simple Laravel-style way to create breadcrumbs.
- Laravel-Breadcrumbが便利だった - もがき系プログラマの日常
関連記事
- Laravel で現在の URL 取得方法まとめ
- Laravel で Cookie を使う(参照/設定/削除)
- Laravel で PDF ファイルをブラウザで開く
- Laravel で withCount と having を使って絞り込み
- Laravel で「開始日時 < 終了日時」であることをバリデーションする
- Laravel で生 SQL を実行
- JavaScript で URL のクエリパラメータを操作する方法
- jQuery Select2 で、初期値の設定と選択状態のクリア