watson/breadcrumbs

Breadcrumbs 为 Laravel 提供简单易用的面包屑导航功能。

1.2.0 2020-12-04 10:14 UTC

This package is auto-updated.

Last update: 2024-09-04 18:24:00 UTC


README

警告:此包目前与 Laravel 7 不兼容。我已经开始重写以支持 Laravel 7,但还没有确定时间表。在此期间,您可能需要考虑使用其他面包屑导航包。

Build Status Total Downloads License

Breadcrumbs 是一个简单的 Laravel 面包屑生成器,它尝试利用魔法使配置变得简单易行。

安装

像往常一样通过 Composer 安装此包。

$ composer require watson/breadcrumbs

使用

routes/breadcrumbs.php 中创建一个新文件以定义您的面包屑。默认情况下,该包将与命名路由一起工作,适用于资源路由。但是,您也可以通过控制器动作/对来定义路由。

Breadcrumbs::for('admin.pages.index', function ($trail) {
    $trail->add('Admin', route('admin.pages.index'));
});

Breadcrumbs::for('admin.users.index', function ($trail) {
    $trail->parent('admin.pages.index');
    $trail->add('Users', route('admin.users.index'));
});

Breadcrumbs::for('admin.users.show', function ($trail, User $user) {
    $trail->parent('admin.users.index');
    $trail->add($user->full_name, route('admin.users.show', $user));
});

Breadcrumbs::for('admin.users.edit', function ($trail, User $user) {
    $trail->parent('admin.users.show', $user);
    $trail->add('Edit', route('admin.users.edit', $user));
});

Breadcrumbs::for('admin.users.roles.index', function ($trail, User $user) {
    $trail->parent('admin.users.show', $user);
    $trail->add('Roles', route('admin.users.roles.index', $user));
});

Breadcrumbs::for('admin.users.roles.show', function ($trail, User $user, Role $role) {
    $trail->parent('admin.users.roles.index', $user, $role);
    $trail->add('Edit', route('admin.users.roles.show', [$user, $role]));
});

请注意,您可以在面包屑定义中调用 parent(),这允许您构建面包屑树。通过第二个参数传递您需要的任何参数。

如果您想使用控制器/动作对而不是命名路由,那也可以。使用常规 Laravel 语法,该包会为您正确映射。请注意,如果路由有命名,则包会始终先查找命名面包屑。

Breadcrumbs::for('PagesController@getIndex', function ($trail) {
    $trail->add('Home', action('PagesController@getIndex'));
});

Breadcrumbs::for('secret.page', function ($trail) {
    $trail->add('Secret page', url('secret'))
});

渲染面包屑

在您的视图文件中,您只需要在您想要面包屑出现的地方调用 render() 方法。就这么简单。如果没有当前路由的面包屑,则不会返回任何内容。

{{ Breadcrumbs::render() }}

您不需要转义面包屑的内容,因为它已经包装在 Illuminate\Support\HtmlString 的实例中,因此 Laravel 知道如何使用它。

多个面包屑文件

如果您的面包屑文件开始变得有点大,您可能希望将其拆分为多个较小的文件。如果是这样,您可以在默认定义文件顶部简单地 require 其他面包屑文件。

require 'breadcrumbs.admin.php';

自定义面包屑视图

该包附带了一个与 Bootstrap 3 兼容的视图,您可以根据需要发布和自定义,或者用您自己的视图完全覆盖。只需运行以下命令来发布视图。

$ php artisan vendor:publish --provider="Watson\Breadcrumbs\ServiceProvider" --tag=views

这将发布默认的 bootstrap3 视图到您的 resources/views/vendor/breadcrumbs 目录,您可以编辑文件到您满意为止。如果您想使用自己的视图,请运行以下命令来发布配置文件。

$ php artisan vendor:publish --provider="Watson\Breadcrumbs\ServiceProvider" --tag=config

这将发布 config/breadcrumbs.php,您可以选择为您的面包屑设置自己的视图文件。

鸣谢

此包受到 Dave James Miller 的工作的启发,我已经使用它一段时间了。它已经从头开始为我自己的用例重写,添加了一些魔法,减少了自定义,并且利用了一些 PHP 的新功能。非常感谢 Dave 的工作。