bored-programmers/larabreadcrumb

LaraBreadcrumb 是一个全面的 Laravel 扩展包,它以简单灵活的方式为 Laravel 应用程序生成面包屑。它支持基于路由的自动面包屑生成、自定义面包屑标题和隐藏特定面包屑。

v2.1.1 2024-01-10 12:47 UTC

This package is auto-updated.

Last update: 2024-09-10 14:21:02 UTC


README

LaraBreadcrumb 是一个简化 Laravel 应用程序中面包屑创建的 Laravel 扩展包。

注意

这是我第一次尝试使用 Laravel 容器和服务的尝试。如果您有任何改进建议,请告诉我。

Laravel Version Version Total Downloads License PHP Version Require

目录

需求

  • 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 面包屑,以及第二个示例中的 commentsusers 面包屑。

要禁用动态段,请使用花括号 {}

use BoredProgrammers\LaraBreadcrumb\Service\BreadcrumbService;

// Route::get('/users/{user}/comments/{comment}');

 $breadcrumbs = BreadcrumbService::update()->disable('{comment}');
 $breadcrumbs = BreadcrumbService::update()->disable(['{user}', '{comment}']);

之后,您将无法点击第一个示例中的 comment 面包屑,以及第二个示例中的 usercomment 面包屑。

翻译面包屑

您可以选择默认翻译某些面包屑或所有面包屑

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成为一个更好的软件包的贡献者。