You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中创建动态面包屑遇问题求助(使用laravel-breadcrumbs)

解决diglactic/laravel-breadcrumbs动态面包屑参数缺失问题

1. 给首页路由补充名称

修改routes/web.php中的首页路由,添加name属性,确保面包屑能正确关联父级:

Route::get('/', function () {
    return view('welcome');
})->name('home');

2. 修正面包屑配置文件(routes/breadcrumbs.php)

按照你需要的「首页/Collections/集合名称」结构配置:

use Diglactic\Breadcrumbs\Breadcrumbs;
use Diglactic\Breadcrumbs\Generator as Trail;
use App\Models\SousCategorie;

// 首页面包屑
Breadcrumbs::for('home', function (Trail $trail) {
    $trail->push('首页', route('home'));
});

// 集合详情页面包屑
Breadcrumbs::for('collections', function (Trail $trail, SousCategorie $sousCategorie) {
    $trail->parent('home');
    $trail->push('Collections', '#'); // 若Collections有独立路由,替换为对应route()即可
    $trail->push($sousCategorie->name, route('collections', $sousCategorie));
});

3. 优化控制器逻辑(可选:用路由模型绑定)

把控制器的show方法改为路由模型绑定,自动获取模型实例,避免手动查询:

namespace App\Http\Controllers;

use App\Models\SousCategorie;

class SousCategorieController extends Controller
{
    public function show(SousCategorie $sousCategorie)
    {
        // 自动根据路由{id}查询对应模型,不存在则返回404
        return view('collections.show', compact('sousCategorie'));
    }
}

如果坚持手动查询,确保获取到模型实例并传给视图:

public function show($id)
{
    $sousCategorie = SousCategorie::findOrFail($id);
    return view('collections.show', compact('sousCategorie'));
}

4. 视图中正确渲染面包屑

在Blade视图里渲染时,必须传递模型实例给render()方法,否则会缺失id参数:

{!! Breadcrumbs::render('collections', $sousCategorie) !!}

报错原因说明

之前的错误是因为调用Breadcrumbs::render()时,没有传递collections面包屑所需的模型/参数,导致生成路由链接时无法填充{id}占位符。传递模型实例后,包会自动提取主键作为路由参数,同时可以直接调用模型的name属性显示集合名称。

内容的提问来源于stack exchange,提问作者Mohmed Blida

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 11:30:11