今回はlaravelでパンくずリストを実装していきます。初めて実装しましたが簡単に実装出来るイメージです。
大まかな流れを。
インストール
パンくずリストを作成
html画面で見れるか確認
見た目を自分好みにしたい場合
ざっとこんな感じです。特に難しいことはしてません。
目次
前提
ユーザー管理機能が実装されている前提で進めていきます。
インストール
とりあえず、githubを参考にインストールしましょう。
composer require davejamesmiller/laravel-breadcrumbs:5.x
パンくずリストを作成
上記のインストールが完了したらroutes/breadcrumbs.phpを作成して、そこにリストを作っていきます。
// ホーム
Breadcrumbs::for('home', function ($trail) {
$trail->push('ホーム', url('/'));
});
// ユーザー系______________________________
// ホーム > ユーザー詳細
Breadcrumbs::for('user_show', function ($trail, $user) {
$trail->parent('home');
$trail->push('ユーザー詳細', route('my_page', $user->id)); 1
});
// ホーム > ユーザー詳細 > ユーザー編集
Breadcrumbs::for('user_edit', function ($trail, $user) {
$trail->parent('user_show', $user); 2
$trail->push('ユーザー編集', route('user_edit', $user->id));
});
// ホーム > ユーザー詳細 > ユーザー編集 > メール編集
Breadcrumbs::for('user_edit_email', function ($trail, $user) {
$trail->parent('user_edit', $user);
$trail->push('メール編集', route('emailchange_before', $user->id));
});
// ホーム > ユーザー詳細 > ユーザー編集 > パスワード編集
Breadcrumbs::for('user_edit_password', function ($trail, $user) {
$trail->parent('user_edit', $user);
$trail->push('パスワード編集', route('passwordchange_before', $user->id));
});
1, route()を使うとweb.phpに設定しているルートのnameを呼び出して使用できます。引数も忘れずに設定です。
2, parent()を設定する時でも呼び出されている側が引数を求めている場合は引数をparent()にも設定する必要があります。
html画面で見れるか確認
パンくずを表示したいところにコードを追加していく。
@yield('breadcrumbs')
見た目を自分好みにしたい場合
php artisan vendor:publish --provider="DaveJamesMiller\Breadcrumbs\BreadcrumbsServiceProvider"
上記のコマンドを実行するとconfig/breadcrumbs.phpが作成されます。以下のコードを記載します。
@if(count($breadcrumbs))
<ul class="breadcrumb">
@foreach($breadcrumbs as $breadcrumb)
@if($breadcrumb->url && !$loop->last)
<li class="breadcrumb-item"><a href="{{$breadcrumb->url}}">{{$breadcrumb->title}}</a></li>
@else
<li class="breadcrumb-item active">{{ $breadcrumb->title }}</li>
@endif
@endforeach
</ul>
@endif
上記のファイルは.php拡張子で生成されますが、viewとして使用する場合には.blade.phpに変更しないとviewとして使用出来ません。
以上で実装できるかと思います。
参考にさせて頂いたサイト
まとめ
インストールして、ファイルを作成し、viewで表示する。
カスタムする場合は、コマンドを使ってファイルの設定をする。この場合はphp拡張子ではなく、viewとして使うので、blade.phpに変更する必要がある。
そこまで難しく無い実装かと思いますし、ユーザー側にとっても便利な機能だと思います、手軽に出来るので良いです。
今回はこんな感じで!
以上!