blackdrago/laracrumbs

此包最新版本(v1.1.0)没有提供许可证信息。

Laracrumbs为Laravel提供数据库驱动的面包屑导航。

安装: 10

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:项目

v1.1.0 2018-06-11 02:21 UTC

This package is not auto-updated.

Last update: 2024-10-02 10:10:26 UTC


README

为Laravel提供的数据库驱动的面包屑导航包。

1. 要求

  • Laravel 5.6(未测试与Laravel 5.0到Laravel 5.5的兼容性)
  • Laravel Mix

2. 安装

2.1. 通过Composer安装

通过composer安装

composer require blackdrago/laracrumbs

然后编辑应用的config/app.php文件并添加以下内容

    'providers' => [
        // ...
        Laracrumbs\ServiceProvider::class,
        // ...
    ],

    // ...

    'aliases' => [
        // ...
        'Laracrumbs' => Laracrumbs\Facades\Laracrumbs::class,
        // ...
    ],

运行以下命令

php artisan config:cache
php artisan vendor:publish --provider="Laracrumbs\ServiceProvider" --tag=config
composer dump-autoload
php artisan migrate --path=vendor/blackdrago/laracrumbs/src/database/migrations/

创建一个名为routes/laracrumbs.php的文件并定义应用的Laracrumbs。(见下文。)

2.2. 配置

Laracrumbs有多个配置设置,包括

  • translation_key:用于翻译语言键值的包前缀
  • template:用于面包屑的Blade模板名称
  • absolute_paths:布尔标志,指示是否使用绝对路径进行路由

3. 创建Laracrumbs

有三种类型的Laracrumbs

  1. 基本:没有参数的链接或路由的面包屑。
  2. 复杂:至少有一个参数的路由的面包屑。
  3. 非链接:作为分类或标记但没有任何链接的面包屑。

最佳方式是通过创建一个可以与应用程序捆绑的新数据库 Seeder 来创建这些。

php artisan make:seeder LaracrumbsSeeder

这将创建一个名为 database/seeds/LaracrumbSeeder.php 的文件,可以在其中进行各种Laracrumbs注册。完成后,只需运行种子命令

php artisan db:seed --class=LaracrumbsSeeder

注意:如果您收到有关Laravel找不到种子类的错误,请尝试运行以下命令

composer dump-autoload

然后再次运行种子命令。

处理Laracrumbs注册的另一种方法是创建一个 Laracrumbs注册文件(例如,routes/laracrumbs.php)并将config/laracrumbs.php文件中的设置更新为指向此文件。

3.1. 创建基本Laracrumb

基本Laracrumb可以是链接或没有参数的路由。

路由

Laracrumbs::register([
    'link' => url(route('home')),
    'display_text' => 'Home',
]);
Laracrumbs::register([
    'link' => url(route('browse')),
    'display_text' => 'Browse',
    'parent_id' => Laracrumb::findByLink(route('home'))->parent_id
]);

链接

Laracrumbs::register([
    'link' => 'http://www.example.com',
    'display_text' => 'Grandparent site',
]);
Laracrumbs::register([
    'link' => 'http://www.anotherexample.com',
    'display_text' => 'Parent site',
    'parent_id' => Laracrumb::findByLink('http://www.example.com')->parent_id
]);

3.2. 创建复杂Laracrumb

具有参数的路由需要复杂Laracrumbs。由于至少有一个参数的路由可以生成多个URL,因此复杂Laracrumbs需要一个映射函数。

例如,假设有两个模型:Category和Product。还有两个相应的“详情视图”路由。注册它们将如下所示

Laracrumbs::register([
    'route_name' => 'category-view',
    'map' => 'category_laracrumb'
]);
Laracrumbs::register([
    'route_name' => 'product-view',
    'map' => 'product_laracrumb'
]);

如果更愿意,可以使用类中的函数代替

Laracrumbs::register([
    'route_name' => 'category-view',
    'map' => '\App\Models\Category::laracrumb'
]);
Laracrumbs::register([
    'route_name' => 'product-view',
    'map' => '\App\Models\Product::laracrumb'
]);

一个复杂Laracrumb映射函数的示例,用于具有Home作为父级的Category模型

function category_laracrumb($route, $link)
{
    $params = $route->parameters();
    $category = \App\Models\Category::find((int)($params['id']));
    if (!is_null($category)) {
        $laracrumb = new \Laracrumbs\Models\Laracrumb();
        $laracrumb->link = $link;
        $laracrumb->display_text = $category->name;
        $laracrumb->parent_id = \Laracrumbs::findParentId('home');
        $laracrumb->save();
        return $laracrumb;
    }
    return null;
}

另一个示例,用于Product模型。其父级是$product->category_id指定的Category。

function product_laracrumb($route, $link)
{
    $params = $route->parameters();
    $product = \App\Models\Product::find((int)($params['id']));
    if (!is_null($product)) {
        $laracrumb = new \Laracrumbs\Models\Laracrumb();
        $laracrumb->link = $link;
        $laracrumb->display_text = $product->name;
        $laracrumb->parent_id = \Laracrumbs::findParentId('category-view', ['id' => $product->category_id]);
        $laracrumb->save();
        return $laracrumb;
    }
    return null;
}

3.3. 创建非链接Laracrumb

非链接Laracrumb没有与路由或链接相关联,而是作为标记或分类。

非链接Laracrumb的示例

Laracrumbs::register([
    'display_text' => 'Getting Started',
]);
Laracrumbs::register([
    'display_text' => 'Markup Tutorial',
    'parent_id' => Laracrumbs::findParentIdByDisplayText('Getting Started')
]);

4. 显示Laracrumbs

如果您没有直接数据库访问权限(或者您不想使用它),可以使用以下控制台命令来检测当前注册的Laracrumbs

php artisan laracrumbs:show

这将显示所有现有/保存的Laracrumbs以及所有已注册的路由映射。

5. 配置设置

发布后,您的应用程序中将有 config/laracrumbs.php 文件。这些设置使您能够自定义Laracrumbs。

5.1. 服务配置设置

  • files:包含Laracrumb注册的一个或多个文件(如果存在)
  • translation_key:本地化(如果存在)的语言包/域键
  • 模板:用于渲染Laracrumbs的Blade模板名称
  • absolute_paths:布尔标志,表示是否使用绝对URL

5.2. 视图配置设置

  • separator:出现在laracrumbs之间的HTML标记
  • class_wrapper:包含整个laracrumbs显示的CSS类
  • class_item:包含单个laracrumb的CSS类
  • class_list:包含laracrumb列表的CSS类
  • class_list_item:包含每个laracrumb列表项的CSS类

请注意,分隔符可以是任何HTML标记。默认情况下是raquo(») HTML特殊字符。然而,如果您的应用程序使用类似FontAwesome的东西,您可以更改分隔符,使其看起来像这样

    'separator' => '<i class="fa fa-chevron-right" aria-hidden="true"></i>',