nomiscz/laravel-breadcrumbs

为 Laravel 简化面包屑导航。

v1.0.0 2020-06-26 20:54 UTC

This package is auto-updated.

Last update: 2024-09-10 02:50:37 UTC


README

Latest Stable Version Total Downloads License

面包屑是一个简单的 Laravel 面包屑生成器,它尝试利用魔法,使启动变得简单。它自带 Bootstrap 3 和 4(默认为 4)的支持,但也可以轻松地将自己的视图添加进去。

安装

如往常一样,通过 Composer 需求此包。

$ composer require nomiscz/laravel-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="NomisCZ\Breadcrumbs\BreadcrumbsServiceProvider" --tag=views

这会将默认的 bootstrap4 视图发布到你的 resources/views/vendor/breadcrumbs 目录,你可以编辑文件以满足你的需求。如果你想使用你自己的视图,请运行以下命令来发布配置文件。

$ php artisan vendor:publish --provider="NomisCZ\Breadcrumbs\BreadcrumbsServiceProvider" --tag=config

这会将 config/breadcrumbs.php 发布出来,它为你提供了设置你自己的面包屑视图文件的选择。

致谢

该包的原始作者是 Dwight Watson。该包受到了 Dave James Miller 的工作的启发,我已经使用它一段时间了。它从头开始重写,以适应我的用例,添加了一些魔法,减少了定制,并利用了 PHP 的一些新功能。感谢 Dave 的辛勤工作。