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 を取得しています。ブレッドクラムにリンクを追加するにはどうすればよいか、誰か助けてもらえますか?

ありがとう。

4

6 に答える 6

13

問題が正しく理解できた場合は、リンクの 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>
于 2016-06-22T13:04:48.627 に答える
5

これに対する解決策がすでに得られているかどうかはわかりませんが、私のプロジェクトでそれを行う方法を見つけました。実装に役立つ場合があります。

URL全体をリンクに追加するか、セグメントのみを追加することになりましたが、これは望ましくないため、配列スライスを使用して、配列の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>

お気づきのように、アプリのベース URL が /admin で始まり、ホーム URL を最初のブレッドクラムに手動で配置したため、イテレーションを 2 ($i = 2) から開始します。

繰り返しますが、既に解決策を持っているかもしれませんが、パンくずリストを取得するためにパッケージを追加したくない人にとっては、これがうまくいく可能性があります.

于 2016-07-20T20:58:21.703 に答える
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])
于 2020-10-25T06:26:16.513 に答える