Я использую пакет с сухарями davejamesmiller. Мне интересно, как передать параметр к хлебной крошке, что-то вроде идентификатора.
В документах (Вот) он говорит, что это возможно, но не может найти способ сделать это.
Моя цель состоит в том, чтобы сделать крошку как это: Dashboard \ User \ New Model
, Где New Model — это форма для добавления данных модели с некоторыми отношениями с пользователем. Без параметра user_id ссылка для User
не сработает
Любая идея?
Вы можете передать глобальную переменную
\View::share ( 'variable2', $variable2 );
если визуализировать панировочные сухари в макете
или вам нужно рендерить хлебные крошки в `user.new_model.blade
@section('content')
{!! Breadcrumbs::render('page', $page) !!}
@stop`
мой метод
Создать шаблон
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
,
Есть два важных момента, которые вы должны иметь в виду, чтобы пойти дальше с этим решением:
breadcrumbs.php
Определение маршрутов — это место, откуда вы должны передать свои параметры.routes/web.php
который будет использоваться позже в routes/breadcrumbs.php
Извлеките следующие фрагменты кода, демонстрирующие два вышеуказанных момента:
//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) !!}
Выше будет визуализировать breacrumbs:
Главная / работа / Изменить: название
работа / Работа по установке оборудования
Обязательные параметры, которые обрабатывают хлебные крошки, указаны выше. render
метод, т.е. через $job->id
а также __('Edit').': '.$job->title)
, последний просто корректирует текст, и это может быть сделано внутри функции обратного вызова breadcrumbs
маршруты.