digctic/laravel-breadcrumbs 除了将其全部写入面包屑文件之外,还有其他方法可以写入面包屑吗?

问题描述 投票:0回答:2

我按照文档开始了一些路线的面包屑

Create a file called routes/breadcrumbs.php that looks like this:

<?php

// Home
Breadcrumbs::for('home', function ($trail) {
    $trail->push('Home', route('home'));
});

// Home > About
Breadcrumbs::for('about', function ($trail) {
    $trail->parent('home');
    $trail->push('About', route('about'));
});

// Home > Blog
Breadcrumbs::for('blog', function ($trail) {
    $trail->parent('home');
    $trail->push('Blog', route('blog'));
});

// Home > Blog > [Category]
Breadcrumbs::for('category', function ($trail, $category) {
    $trail->parent('blog');
    $trail->push($category->title, route('category', $category->id));
});

// Home > Blog > [Category] > [Post]
Breadcrumbs::for('post', function ($trail, $post) {
    $trail->parent('category', $post->category);
    $trail->push($post->title, route('post', $post->id));
});

这很酷并且有效...但我无法想象如果你有 100 多个面包屑,将所有面包屑写入该文件

看起来像是反模式!?

也许有人使用这个包并且知道如何避免像文档所说的那样将所有面包屑写入单个文件的解决方案?

php laravel breadcrumbs
2个回答
0
投票

这里是 Laravel Breadcrumbs 的维护者。

这是一个常见问题。最优雅的解决方案是利用宏来获取资源丰富的路线。

Breadcrumbs::macro('resource', function (string $name, string $title) {
    Breadcrumbs::for("{$name}.index"...
    Breadcrumbs::for("{$name}.create"...
    Breadcrumbs::for("{$name}.show"...
    Breadcrumbs::for("{$name}.edit"...
});

然后,您可以使用此快捷方式,例如:

Breadcrumbs::resource('blog', 'Blog');

希望有帮助。始终对如何改进图书馆的想法持开放态度。欢迎在 GitHub 上发起讨论,这样更容易引起我的关注!


0
投票

面包屑.php

Breadcrumbs::macro('resource', function (string $name, string $title) {
    // Home > Blog
    Breadcrumbs::for("{$name}.index", function (BreadcrumbTrail $trail) use ($name, $title) {
        $trail->parent('home');
        $trail->push($title, route("{$name}.index"));
    });

    // Home > Blog > New
    Breadcrumbs::for("{$name}.create", function (BreadcrumbTrail $trail) use ($name) {
        $trail->parent("{$name}.index");
        $trail->push('New', route("{$name}.create"));
    });

    // Home > Blog > Post 123
    Breadcrumbs::for("{$name}.show", function (BreadcrumbTrail $trail, BlogModel $model) use ($name) {
        $trail->parent("{$name}.index");
        $trail->push($model->title, route("{$name}.show", $model));
    });

    // Home > Blog > Post 123 > Edit
    Breadcrumbs::for("{$name}.edit", function (BreadcrumbTrail $trail, BLogModel $model) use ($name) {
        $trail->parent("{$name}.show", $model);
        $trail->push('Edit', route("{$name}.edit", $model));
    });
});

Breadcrumbs::resource('blog', 'Blog');

观点

博客/index.blade.php

{{ Breadcrumbs::render('article.index') }}

博客/create.blade.php

{{ Breadcrumbs::render('article.create') }}
© www.soinside.com 2019 - 2024. All rights reserved.