tabuna/breadcrumbs
Composer 安装命令:
composer require tabuna/breadcrumbs
包简介
An easy way to add breadcrumbs to your Laravel app.
README 文档
README
Introduction
Breadcrumbs display a list of links indicating the position of the current page in the whole site hierarchy. For example, breadcrumbs like Home / Sample Post / Edit means the user is viewing an edit page for the "Sample Post." He can click on "Sample Post" to view that page or click on "Home" to return to the homepage.
Home / Sample Post / Edit
This package for the Laravel framework will make it easy to build breadcrumbs in your application.
Installation
Run this at the command line:
composer require tabuna/breadcrumbs
This will update composer.json and install the package into the vendor/ directory.
Define your breadcrumbs
Now you can define breadcrumbs directly in the route files:
use Tabuna\Breadcrumbs\Trail; // Home Route::get('/', fn () => view('home')) ->name('home') ->breadcrumbs(fn (Trail $trail) => $trail->push('Home', route('home')) ); // Home > About Route::get('/about', fn () => view('home')) ->name('about') ->breadcrumbs(fn (Trail $trail) => $trail->parent('home')->push('About', route('about')) );
You may also retrieve arguments from the request. Parameters are resolved by name:
Route::get('/category/{category}', function (Category $category) { // In this example, $category is an Eloquent model instance. // ... }) ->name('category') ->breadcrumbs(fn (Trail $trail, Category $category) => $trail->push($category->title, route('category', $category->id)) );
Route detection
The package tries to reduce the number of lines needed. For this, you can skip passing the results of the route() methods.
The following two declarations will be equivalent:
Route::get('/', fn () => view('home')) ->name('home') ->breadcrumbs(fn (Trail $trail) => $trail->push('Home', route('home')) ); Route::get('/', fn () => view('home')) ->name('home') ->breadcrumbs(fn (Trail $trail) => $trail->push('Home', 'home') );
Like to use a separate route file?
You can do this simply by adding the desired file to the service provider
namespace App\Providers; use Illuminate\Support\ServiceProvider; class BreadcrumbsServiceProvider extends ServiceProvider { /** * Bootstrap the application events. */ public function boot(): void { require base_path('routes/breadcrumbs.php'); } }
Then it will be your special file in the route directory:
// routes/breadcrumbs.php // Photos Breadcrumbs::for('photo.index', fn (Trail $trail) => $trail->parent('home')->push('Photos', route('photo.index')) );
Route resource
When using resources, a whole group of routes is declared for which you must specify values manually
// routes/web.php Route::resource('photos', 'PhotoController');
It’s better to specify this in service providers, since route files can be cached
namespace App\Providers; use Illuminate\Support\ServiceProvider; use Tabuna\Breadcrumbs\Breadcrumbs; use Tabuna\Breadcrumbs\Trail; class BreadcrumbsServiceProvider extends ServiceProvider { /** * Bootstrap any application services. */ public function boot(): void { Breadcrumbs::for('photos.index', fn (Trail $trail) => $trail->push('Photos', route('home')) ); Breadcrumbs::for('photos.create', fn (Trail $trail) => $trail ->parent('photos.index', route('photos.index')) ->push('Add new photo', route('home')) ); } }
Output the breadcrumbs use Blade Component
You can use the output component:
<ul> <x-tabuna-breadcrumbs/> </ul>
To define classes of list items, you can specify:
<x-tabuna-breadcrumbs class="item" active="active" />
You can also pass parameters:
<x-tabuna-breadcrumbs :parameters="[ 'foo' => 'Dashboard', 'baz' => 'Users', 'buzz' => 'Edit Profile' ]" />
And call named routes explicitly:
<x-tabuna-breadcrumbs route="static" />
Output the breadcrumbs use Blade view
In order to display breadcrumbs on the desired page, simply call:
@if(Breadcrumbs::has()) @foreach (Breadcrumbs::current() as $crumbs) @if ($crumbs->url() && !$loop->last) <li class="breadcrumb-item"> <a href="{{ $crumbs->url() }}"> {{ $crumbs->title() }} </a> </li> @else <li class="breadcrumb-item active"> {{ $crumbs->title() }} </li> @endif @endforeach @endif
And results in this output:
Home / About
Credits
For several years, I successfully used the Dave James Miller package to solve my problems, but he stopped developing and supporting it. After a long search for alternatives, I liked the Dwight Watson package, but the isolation of breadcrumbs from the announcement of the routes did not give me rest. That's why I created this package. It uses the code of both previous packages.
License
The MIT License (MIT). Please see License File for more information.
tabuna/breadcrumbs 适用场景与选型建议
tabuna/breadcrumbs 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 3.63M 次下载、GitHub Stars 达 421, 最近一次更新时间为 2020 年 04 月 24 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 tabuna/breadcrumbs 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 tabuna/breadcrumbs 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 3.63M
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 422
- 点击次数: 21
- 依赖项目数: 12
- 推荐数: 2
其他信息
- 授权协议: MIT
- 更新时间: 2020-04-24