Хлебные крошки

Для генерации хлебных крошек используется пакет diglactic/laravel-breadcrumbs

Конфиг пакета публикуется при выполнении команды rock-cms:install.

Если по какой-то причине конфига breadcrumbs.php нет, то опубликовать его можно с помощью команды:

php artisan vendor:publish --tag=breadcrumbs-config

В конфиге нужно изменить 2 параметра:

// config/breadcrumbs.php

'view' => 'breadcrumbs::bootstrap4',
'files' => glob(base_path('routes/breadcrumbs/*.php')),

Для показа хлебных крошек в новом разделе в админки нужно добавить новый файл c настройками.

// routes/breadcrumbs/posts.php

<?php

use App\Models\Post;
use Diglactic\Breadcrumbs\Breadcrumbs;
use Diglactic\Breadcrumbs\Generator as BreadcrumbTrail;

// Список новостей
Breadcrumbs::for('posts', function (BreadcrumbTrail $trail) {
    $trail->parent('home');
    $trail->push('Новости', route('posts.list'));
});

// Страница редактирования новости
Breadcrumbs::for('posts.edit', function (BreadcrumbTrail $trail, Post $post) {
    $trail->parent('posts');
    $trail->push($post->title, route('posts.edit', $post));
});

// Страница создания новой новости
Breadcrumbs::for('posts.create', function (BreadcrumbTrail $trail) {
    $trail->parent('posts');
    $trail->push('Новая новость');
});

Также должен быть файл для home раздела.

<?php

use Diglactic\Breadcrumbs\Breadcrumbs;
use Diglactic\Breadcrumbs\Generator as BreadcrumbTrail;

Breadcrumbs::for('home', function (BreadcrumbTrail $trail) {
    $trail->push('Главная', route('home'));
});

После этого добавляем показ крошек в blade шаблонах.

// resources/views/admin/posts/list.blade.php

@section('breadcrumbs')
    {{ Breadcrumbs::render('posts') }}
@stop

// resources/views/admin/posts/edit.blade.php

@section('breadcrumbs')
    {{ Breadcrumbs::render('posts.edit', $model) }}
@stop

// resources/views/admin/posts/create.blade.php

@section('breadcrumbs')
    {{ Breadcrumbs::render('posts.create') }}
@stop

В роутах на создание и обновление ресурса передается изменяемая модель, поэтому у нас есть к ней доступ через переменную $model.

Last updated