vixen/laravel-breadcrumbs 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

vixen/laravel-breadcrumbs

Composer 安装命令:

composer require vixen/laravel-breadcrumbs

包简介

A simple breadcrumbs package for Laravel, with support for Blade and Inertia.js.

README 文档

README

Latest Version on Packagist Total Downloads

A simple breadcrumbs package for Laravel, with support for Blade and Inertia.js.

// In your controller
crumbs('Posts', '/posts')->add('Show Post', route('posts.show', $post));
<!-- In your Blade view -->
@crumbs
// In your Inertia component
<Breadcrumbs items={breadcrumbs} />

Installation

composer require vixen/laravel-breadcrumbs

The service provider is auto-discovered. To publish the config and views:

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

Quick Start

Add breadcrumbs from your controller or routes file, then render them in your view.

Adding Breadcrumbs

From a controller:

public function show(Post $post)
{
    crumbs('Posts', '/posts')->add($post->title, route('posts.show', $post));
}

From your routes file:

Route::get('posts', [PostController::class, 'index'])->crumbs(function (Breadcrumbs $crumbs) {
    $crumbs->add('Posts', '/posts');
});

Rendering

In Blade, use the @crumbs directive or call render() directly:

@crumbs

{{-- or with a custom view --}}
@crumbs(breadcrumbs::custom-view)

For Inertia.js, the breadcrumbs are available as a JSON-serializable array via crumbs()->toArray() or crumbs()->toJson().

Usage

Notations

There are three interchangeable ways to interact with breadcrumbs:

Helper function (recommended):

crumbs('Home', '/')->add('About', '/about');

Facade:

use Vixen\Breadcrumbs\Facades\Crumbs;

Crumbs::add('Home', '/');

Dependency injection:

use Vixen\Breadcrumbs\Breadcrumbs;

public function index(Breadcrumbs $crumbs)
{
    $crumbs->add('Home', '/');
}

Options Array

Instead of separate arguments, you can pass an associative array:

crumbs([
    'title' => 'Posts',
    'path' => '/posts',
    'extra' => ['icon' => 'newspaper'],
]);

Multi-Item Positions

A position in the trail can hold multiple items by passing a sequential array. This is useful for rendering a dropdown selector instead of a single link:

// Home > [Electronics | Clothing | Books] > Product Name
crumbs('Home', '/')
    ->add([
        ['title' => 'Electronics', 'path' => '/categories/electronics'],
        ['title' => 'Clothing', 'path' => '/categories/clothing'],
        ['title' => 'Books', 'path' => '/categories/books'],
    ])
    ->add($product->name, route('products.show', $product));

When iterating, a multi-item position is an array of Breadcrumb objects rather than a single one. Each item independently tracks its own active state.

Custom Views

Publish the views and edit them, or create your own. The default view (breadcrumbs::plain):

<nav aria-label="Breadcrumb">
    <ol role="list" style="display: flex; align-items: center; gap: 1rem">
        @foreach ($breadcrumbs as $breadcrumb)
            @if (!$loop->first)
                <li>/</li>
            @endif

            @if ($breadcrumb->active)
                <li>{{ $breadcrumb->title }}</li>
            @else
                <li>
                    <a href="{{ $breadcrumb->path }}">
                        {{ $breadcrumb->title }}
                    </a>
                </li>
            @endif
        @endforeach
    </ol>
</nav>

You can specify a different view globally in config/breadcrumbs.php or per-render:

crumbs()->render('breadcrumbs::custom-view')

API

Breadcrumbs::add(string|array $title, ?string $path = null, array $extra = [])

Parameter Type Description
$title string|array The breadcrumb label, an options array, or a list of options arrays
$path ?string A URL string. null means no link.
$extra array Arbitrary extra data attached to the breadcrumb.

When $title is an associative array, it is treated as a single breadcrumb with keys title, path (optional), and extra (optional).

When $title is a sequential array, each element is an options array and the items are grouped at a single position in the trail.

crumbs(string|array|callable|null $title = null, ?string $path = null, array $extra = [])

Same as Breadcrumbs::add(), but also accepts a callable and returns the Breadcrumbs instance. Called without arguments, it simply returns the instance.

Breadcrumb Properties

Property Type Description
title string The breadcrumb label.
path ?string The URL, or null if none was provided.
active bool true when path matches the current URL.
extra array Arbitrary extra data.

Changelog

See CHANGELOG for all changes.

Contributing

See CONTRIBUTING for details.

Credits

License

MIT. See LICENSE for details.

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 3
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-07-06

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固