以前から紹介したいと思っていたパンくずのパッケージがありました。人気ものなのですが、作者が忙しいという理由で管理を辞めてしまいました。幸い、Laravelのバージョンが上がっても問題なく動作していますが、いつダメになるわかりません。小さなパッケージはこれがあるから嫌だなと思うところですが、オープンソースゆえに他の開発者が後継してくれました。しかも、「オフィシャル」となっているので長期間管理されるようです。今回はこのパッケージの紹介です。

まず、以下の画面見てください。

パンくずとは、矢印の部分に表示される階層のナビゲーションのことです。

現在の画面のポジション、ここなら管理ユーザーのtesttestの編集画面ということがわかるし、その前の「管理ユーザーリスト」、「ホーム」にもリンクがついてここから直接リンク先に飛ばすことができます。

さて、これを作成するためには、まずパッケージのインストールから、

$ composer require diglactic/laravel-breadcrumbs

実行が完了したら、次は設定です。

routes/breadcrumbs.php

のファイルを作成して、以下のように定義します。、


Breadcrumbs::for('admin.home', function ($trail) {
    $trail->push('ホーム', route('admin.home'));
})

Breadcrumbs::for('admin.user.index', function ($trail) {
    $trail->parent('admin.home');
    $trail->push('管理ユーザー', route('admin.user.index'));
});

Breadcrumbs::for('admin.user.create', function ($trail) {
    $trail->parent('admin.user.index');
    $trail->push('新規');
});

Breadcrumbs::for('admin.user.show', function ($trail, $user) {
    $trail->parent('admin.user.index');
    $trail->push($user->login);
});

// 以下が先の画面のパンくず
Breadcrumbs::for('admin.user.edit', function ($trail, $user) {
    $trail->parent('admin.user.show', $user);
    $trail->push('編集');
});

パンくずの名前、つまりfor()の最初の引数、がユニークである必要があります。名前つきのルートを使用しているなら、それと同じとするのが良いでしょう。

parent()の関数を使用するなら、その前に定義したパンくずとチェーンできます。例えば、上の、admin.user.editの定義なら、以下のようにチェーンされます。

admin.user.edit → admin.user.show → admin.user.index → admin.home

設定が完了したら、ブレイドのレイアウトのテンプレートファイルに、

...
{{ Breadcrumbs::render('admin.user.edit', $user) }}
..

と埋め込むと、最初の画面のようなHTMLコードが自動生成されます。

もちろん、このためのテンプレートがあるわけですが、デフォルトではbootstrap ver.4が使われます。

こちらが今回紹介したパッケージ:

https://github.com/diglactic/laravel-breadcrumbs

長い間、大変お世話になっていた旧パッケージ:

https://github.com/davejamesmiller/laravel-breadcrumbs

By khino