Laravel 5.1 — передать параметр в хлебные крошки

Я использую пакет с сухарями davejamesmiller. Мне интересно, как передать параметр к хлебной крошке, что-то вроде идентификатора.

В документах (Вот) он говорит, что это возможно, но не может найти способ сделать это.

Моя цель состоит в том, чтобы сделать крошку как это: Dashboard \ User \ New Model, Где New Model — это форма для добавления данных модели с некоторыми отношениями с пользователем. Без параметра user_id ссылка для User не сработает

Любая идея?

4

Решение

Вы можете передать глобальную переменную

\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]
]);
3

Другие решения

Есть другой способ. Как правило, в каждом представлении просто зовет Breadcrumbs::render() следует создать иерархию ссылок на хлебные крошки в зависимости от маршрутов, определенных в routes/breadcrumbs.php,

Есть два важных момента, которые вы должны иметь в виду, чтобы пойти дальше с этим решением:

  1. Функция обратного вызова, найденная в breadcrumbs.php Определение маршрутов — это место, откуда вы должны передать свои параметры.
  2. Дать правильное имя вашему веб-маршруту от 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 маршруты.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector