Laravel динамические панировочные сухари со ссылками


Laravel динамические панировочные сухари со ссылками

22.06.2016 02:29:36 Просмотров 5 Источник

Я пытаюсь реализовать динамические хлебные крошки в laravel со ссылками. Я успешно визуализирую панировочные сухари, но без ссылок, следуя следующему коду.

    <ol class="breadcrumb">
    <li><a href="#"><i class="fa fa-dashboard"></i>Marketplace</a></li>
    @foreach(Request::segments() as $segment)
    <li>
        <a href="#">{{$segment}}</a>
    </li>
    @endforeach
</ol>

Но теперь я столкнулся с проблемой с URL-адресами. Я получаю текущего URL-адреса маршрута с учетом всех потомков. Может ли кто-нибудь, пожалуйста, помочь мне, как я могу добавить ссылки на панировочные сухари ?

Спасибо.

У вопроса есть решение - Посмотреть?

Ответы - Laravel динамические панировочные сухари со ссылками / Laravel dynamic breadcrumbs with links

Mohamed Laabid

22.06.2016 03:27:44

Просто добавьте косую черту / перед любой ссылкой, чтобы добавить декендентов к доменному имени , как это

<a href="/YourLink" ></a>

user1669496

22.06.2016 04:04:48

Если я правильно понял ваш вопрос, вам просто нужно заполнить URL-адрес ссылки. Это непроверено, но я думаю, что это должно сработать.

<ol class="breadcrumb">
    <li><a href="#"><i class="fa fa-dashboard"></i>Marketplace</a></li>
    <?php $segments = ''; ?>
    @foreach(Request::segments() as $segment)
        <?php $segments .= '/'.$segment; ?>
        <li>
            <a href="{{ $segments }}">{{$segment}}</a>
        </li>
    @endforeach
</ol>
Eamon

20.07.2016 11:58:21

Я не уверен, что у вас уже есть решение для этого, но я нашел способ сделать это в своем проекте. Это может пригодиться для вашей реализации.

В итоге я либо добавил весь url-адрес к ссылке, либо только сегмент, что ofc нежелательно, поэтому с помощью array slice я начинаю нарезку с индекса 0 в массиве и только срезаю до текущей итерации цикла, затем взрываю массив в строку и затем использую URL::to для создания ссылки.

<ol class="breadcrumb">
   <li>
       <i class="fa fa-home"></i>
       <a href="{{route('admin.index')}}">HOME</a>
   </li>

   @for($i = 2; $i <= count(Request::segments()); $i++)
      <li>
         <a href="{{ URL::to( implode( '/', array_slice(Request::segments(), 0 ,$i, true)))}}">
            {{strtoupper(Request::segment($i))}}
         </a>
      </li>
   @endfor
</ol>

Как вы заметите, я начинаю свою итерацию только с 2 ($i = 2), так как мой базовый url-адрес приложения начинается с /admin, и я вручную помещаю свой домашний Url-адрес в первую хлебную крошку.

Опять же, возможно, у вас уже есть решение, но повсеместно это может сработать для людей, которые не хотят добавлять пакет, чтобы получить панировочные сухари.

Rohan Khude

20.02.2018 05:20:24

Это сработало для меня, попробовав в Laravel 5.4.*

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

Ниже код создаст крошку для каждого пути -

<a href="/">Home</a> >                
<?php $link = "" ?>
@for($i = 1; $i <= count(Request::segments()); $i++)
    @if($i < count(Request::segments()) & $i > 0)
    <?php $link .= "/" . Request::segment($i); ?>
    <a href="<?= $link ?>">{{ ucwords(str_replace('-',' ',Request::segment($i)))}}</a> >
    @else {{ucwords(str_replace('-',' ',Request::segment($i)))}}
    @endif
@endfor

Так что хлебная крошка для URL your_site.com/abc/lmn/xyz будет - Home > > abc > > lmn > xyz

Надеюсь, это поможет!

Arash Younesi

25.10.2020 09:26:16

Я написал этот код, который может динамически обрабатывать маршруты laravel resource ( index | edit | create ) :

Пользовательские хлебные крошки => custom.blade.php

@php
    $segments=[];
    $l=count(Request::segments())-1
@endphp

@switch(Request::segments()[$l])
    @case('edit')
        @php
            $l--;
            $segments=array_slice(Request::segments(),0,$l);
            $segments[]=$model->slug // Model that passed to this included blade file
        @endphp
    @break
    @default
        @php $segments=Request::segments() @endphp
@endswitch

@php
    $link=''
@endphp
@foreach($segments as $sg)
   @php $link.='/'.$sg @endphp
   @if($loop->index<$l)
      <li class="breadcrumb-item">
         <a href="{{$link}}">{{ucfirst($sg=='admin'?'home':$sg)}}</a>
      </li>
   @else
      <li class="breadcrumb-item active">
         {{ucfirst($sg)}}
      </li>
   @endif
@endforeach

Используйте пользовательские хлебные крошки => example.balde.php

@include('admin.vendor.breadcrumb.custom',['model'=> $articles])
Помочь в развитии проекта:
Закрыть X