Laravel动态面包屑链接

时间:2016-06-22 11:29:36

标签: laravel laravel-5.2 breadcrumbs adminlte

我正在尝试使用链接在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>

但现在我面临着网址的问题。我得到了所有后代的路线的当前网址。有人可以帮我,我怎么能添加到面包屑的链接?

感谢。

5 个答案:

答案 0 :(得分:5)

如果我正确理解您的问题,您只需填写链接的网址即可。这是未经测试的,但我认为它应该有用。

<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>

答案 1 :(得分:4)

我不确定你是否已经有了解决方案,但我想出了一个方法来解决这个问题。它可能会为您的实施派上用场。

我最后将整个url添加到链接或只添加了段,这是不可取的,所以使用数组切片我从数组中的0索引开始切片,只切片直到循环的当前迭代,然后将数组内爆为一个字符串,然后使用URL ::来创建链接。

<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放在第一个痕迹中。

您可能已经有了一个解决方案,但是这可以适用于那些不想添加包来获取面包屑的人。

答案 2 :(得分:4)

这对我有用,在Laravel 5.4中试过。*

要求此代码完美运行:所有网址都应在路由文件中具有层次结构模式

下面的代码会为每条路径创建crumb -

<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

所以网址的面包屑 your_site.com/abc/lmn/xyz将是 - Home&gt; abc&gt; lmn&gt; XYZ

希望这有帮助!

答案 3 :(得分:0)

为任何链接添加斜杠/ berfor以将后嗣添加到域名 喜欢那个<a href="/YourLink" ></a>

答案 4 :(得分:0)

我编写了以下代码,可以动态处理laravel资源( 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])