bored-programmers / larabreadcrumb
LaraBreadcrumb 是一个全面的 Laravel 扩展包,它以简单灵活的方式为 Laravel 应用程序生成面包屑。它支持基于路由的自动面包屑生成、自定义面包屑标题和隐藏特定面包屑。
Requires
- php: ^8.1
- laravel/framework: ^10.0
README
LaraBreadcrumb 是一个简化 Laravel 应用程序中面包屑创建的 Laravel 扩展包。
注意
这是我第一次尝试使用 Laravel 容器和服务的尝试。如果您有任何改进建议,请告诉我。
目录
需求
- PHP 8.1 或更高版本
- Laravel 10.0 或更高版本
安装
要安装 LaraBreadcrumb,请使用以下命令
composer require bored-programmers/larabreadcrumb
基本用法
默认情况下,LaraBreadcrumb 会根据路由自动生成面包屑。它使用路由参数值作为面包屑标题。例如,对于像 admin/customers/1
这样的路由,它生成一个如下的面包屑:Admin / Customers / 1
。
显示面包屑
<x-larabreadcrumb::breadcrumb/>
自定义面包屑
对于像 Route::get('/users/{customer}')
这样的路由,LaraBreadcrumb 生成一个如下的面包屑:Users / 1
。要自定义面包屑,您可以使用 BreadcrumbService
类
use BoredProgrammers\LaraBreadcrumb\Service\BreadcrumbService; BreadcrumbService::update() ->setAccessors([ 'customer' => fn($model) => $model->name 'customer' => fn(User $user) => $user->name 'customer' => 'name' ]); ])
这会生成一个如下的面包屑:Users / John
。键 customer
是路由参数的名称,值是访问器。您可以使用闭包或字符串。
您还可以有条件地添加单个访问器
use BoredProgrammers\LaraBreadcrumb\Service\BreadcrumbService; BreadcrumbService::update() ->setAccessors([ 'customer' => fn($model) => $model->name 'customer' => fn(User $user) => $user->name 'customer' => 'name' ]); ]) if (true) { BreadcrumbService::update() ->addAccessor('customer', fn($model) => $model->name); ]) }
前缀面包屑
默认情况下,面包屑没有前缀。要向面包屑添加前缀,请使用 BreadcrumbService
类
use BoredProgrammers\LaraBreadcrumb\Service\BreadcrumbService; # Route::get('/users/{user}/comments/{comment}'); BreadcrumbService::update() ->setPrefix('breadcrumb'); ])
这会生成一个如下的面包屑:breadcrumb.users / 1 / breadcrumb.comments / 1
。
注意:建议在使用翻译时使用前缀,以防止冲突。例如,对于像 Route::get('admin/users')
这样的路由,它生成一个如下的面包屑:admin / users
。这通常没有问题,直到您有翻译文件 admin.php
。然后它会给出错误 数组转换为字符串
。
隐藏面包屑
您可以选择隐藏某些面包屑
use BoredProgrammers\LaraBreadcrumb\Service\BreadcrumbService; // Route::get('/users/{user}/comments/{comment}'); $breadcrumbs = BreadcrumbService::update()->hide('comments'); $breadcrumbs = BreadcrumbService::update()->hide(['comments', 'users']);
这会隐藏 comments
面包屑。第一个结果是 Users / {user} / {comment}
,第二个结果是 {user} / {comment}
。
要隐藏动态段,请使用花括号 {}
use BoredProgrammers\LaraBreadcrumb\Service\BreadcrumbService; // Route::get('/users/{user}/comments/{comment}'); $breadcrumbs = BreadcrumbService::update()->hide('{comment}'); $breadcrumbs = BreadcrumbService::update()->hide(['{user}', '{comment}']);
这会隐藏面包屑中的动态段。第一个结果是 Users / {user} / Comments
,第二个结果是 Users / Comments
。
禁用面包屑
您可以选择禁用某些面包屑的点击事件。
注意:这不会隐藏链接;它只会禁用点击事件。
use BoredProgrammers\LaraBreadcrumb\Service\BreadcrumbService; // Route::get('/users/{user}/comments/{comment}'); $breadcrumbs = BreadcrumbService::update()->disable('comments'); $breadcrumbs = BreadcrumbService::update()->disable(['comments', 'users']);
之后,您将无法点击第一个示例中的 comments
面包屑,以及第二个示例中的 comments
和 users
面包屑。
要禁用动态段,请使用花括号 {}
use BoredProgrammers\LaraBreadcrumb\Service\BreadcrumbService; // Route::get('/users/{user}/comments/{comment}'); $breadcrumbs = BreadcrumbService::update()->disable('{comment}'); $breadcrumbs = BreadcrumbService::update()->disable(['{user}', '{comment}']);
之后,您将无法点击第一个示例中的 comment
面包屑,以及第二个示例中的 user
和 comment
面包屑。
翻译面包屑
您可以选择默认翻译某些面包屑或所有面包屑
use BoredProgrammers\LaraBreadcrumb\Service\BreadcrumbService; // Translate certain segments BreadcrumbService::update()->translate('users'); BreadcrumbService::update()->translate(['users', 'comments']); // Translate all segments by default BreadcrumbService::update()->translateAll();
如果您想翻译所有面包屑,但不想翻译某些段,请使用 dontTranslate
方法
use BoredProgrammers\LaraBreadcrumb\Service\BreadcrumbService; BreadcrumbService::update()->translateAll(true); // Don't translate certain segments BreadcrumbService::update()->dontTranslate('users'); BreadcrumbService::update()->dontTranslate(['users', 'comments']);
这确保了在第一个示例中'users'部分不会被翻译,在第二个示例中'users'和'comments'部分即使translateAll设置为true也不会被翻译。
如果您想翻译动态部分,必须使用大括号{}。
use BoredProgrammers\LaraBreadcrumb\Service\BreadcrumbService; // Route::get('/users/{user}/comments/{comment}'); BreadcrumbService::update()->translate('{user}'); BreadcrumbService::update()->translate(['{user}', '{comment}']);
发布视图
如果您想自定义视图,可以使用此命令发布
php artisan vendor:publish --tag=larabreadcrumb-views
贡献
我们欢迎对LaraBreadcrumb的贡献。如果您想贡献,请克隆仓库,进行更改,并提交拉取请求。我们对贡献有一些要求
- 遵循PSR-2编码标准。
- 仅使用拉取请求进行贡献。
变更日志
有关变更的详细历史记录,请参阅GitHub上的发布。
许可
本项目受MIT许可证许可。
联系方式
如有任何疑问或疑虑,请随时在GitHub上创建讨论。
鸣谢
由Matěj Černý(来自Bored Programmers)创建。
感谢
我们感谢所有帮助使LaraBreadcrumb成为一个更好的软件包的贡献者。