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

Для генерации хлебных крошек используется пакет [diglactic/laravel-breadcrumbs](https://github.com/diglactic/laravel-breadcrumbs)

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

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

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

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

```php
// config/breadcrumbs.php

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

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

```php
// 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
<?php

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

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

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

```php
// 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
```

{% hint style="info" %}
В роутах на создание и обновление ресурса передается изменяемая модель, поэтому у нас есть к ней доступ через переменную $model.
{% endhint %}
