Laravel 5.1 - 将参数传递给面包屑

Laravel 5.1 - Pass parameter to Breadcrumbs

我使用 davejamesmiller Breadcrumbs 包。我想知道如何将参数传递给面包屑,比如 id。

在文档 (here) 中说这是可能的,但找不到实现它的方法。

我的目标是像这样制作面包屑:Dashboard \ User \ New Model。 New Model 是一种添加与用户有某种关系的模型数据的形式。如果没有 user_id 参数,User 的 link 将无法工作。

有什么想法吗?

可以传全局变量

\View::share ( 'variable2', $variable2 );

如果在布局中呈现面包屑

或者您需要在 `user.new_model.blade

中呈现面包屑
@section('content')
{!! Breadcrumbs::render('page', $page) !!}
@stop`

my way

创建模板

breadcrumbs.blade.php

有内容

@if(!empty($breadcrumbs))
    <ol class="breadcrumb">
    <li>{!! link_to_route('main', 'Home') !!}</li>
    @foreach($breadcrumbs as $bread)
        @if(isset($bread['url']))
            <li>{!! link_to($bread['url'], $bread['name']) !!}</li>
        @else
            <li>{!! $bread['name'] !!}</li>
        @endif
    @endforeach
    </ol>
@endif

并将其连接到布局

@include('breadcrumbs')

并在您的操作中传递链接数组

\View::share('breadcrumbs', [
        ['url' => route('collection.show', ['id'=>$data->collection, 'url'=>$data->collection]), 'name' => $data->collection->name],
        ['name' => $data->article]
    ]);

还有一个办法。通常,在每个视图中,仅调用 Breadcrumbs::render() 应该根据 routes/breadcrumbs.php.

中定义的路由创建面包屑链接的层次结构

要进一步使用此解决方案,请牢记两个要点:

  1. breadcrumbs.php 路由定义中找到的回调函数是您应该传递参数的地方。
  2. 为来自 routes/web.php 的网络路由提供正确的名称,稍后将在 routes/breadcrumbs.php
  3. 中使用

查看以下演示上述两点的代码片段:

//Point1: routes/breadcrumbs.php

Breadcrumbs::register('job.edit', function($breadcrumbs, $job, $title)
{
    $breadcrumbs->parent('job','job');  
    $breadcrumbs->push($title, route('job.edit', $job));
});
Breadcrumbs::register('job.edit.install', function($breadcrumbs, $job, $title)
{   
    $breadcrumbs->parent('job.edit',$job, $title);  
    $breadcrumbs->push('Job Install Equipments', route('job.edit.install','job'));
});

在上面的代码中我们通过回调函数传递了$job$title

//Point2 routes/web.php
Route::get('/job/edit/{job}', 'JobController@edit')->name('job.edit');
Route::get('/job/install-equipments/{job}', 'JobController@installEquipments')->name('job.edit.install');

我们通过name方法给路线命名,Laravel 5.4,这样我们就可以在Point1中正确定义路线。

最后一步是您在视图文件中所做的。在这里,我将向您展示关于 /job/install-equipments 的最后一个,它应该作为最后一个元素呈现在面包屑中,其父元素是 job/edit,参数 job 处理主键 id

//install.equipments.blade.php
@extends('layouts.main')
@section('content')
{!! Breadcrumbs::render('job.edit.install',$job->id, __('Edit').': '.$job->title) !!}

以上内容将呈现面包屑:

Home / Job / Edit: title of job / Job Install Equipment

处理面包屑渲染所需的参数由上述 render 方法提供,即通过 $job->id__('Edit').': '.$job->title),最后只是调整文本,它可以在breadcrumbs 路由的回调函数。