watson / breadcrumbs
Breadcrumbs 为 Laravel 提供简单易用的面包屑导航功能。
Requires
- php: ^7.2.5||^8.0
- illuminate/routing: ^6.0||^7.0||^8.0
- illuminate/support: ^6.0||^7.0||^8.0
- illuminate/view: ^6.0||^7.0||^8.0
Requires (Dev)
- mockery/mockery: ^1.3.1||^1.4.2
- orchestra/testbench: ^4.0||^5.0||^6.1
- phpunit/phpunit: ^8.2.3||^9.0
README
警告:此包目前与 Laravel 7 不兼容。我已经开始重写以支持 Laravel 7,但还没有确定时间表。在此期间,您可能需要考虑使用其他面包屑导航包。
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 的工作。