我正在尝试使用链接在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>
但现在我面临着网址的问题。我得到了所有后代的路线的当前网址。有人可以帮我,我怎么能添加到面包屑的链接?
感谢。
答案 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])