PHP - 列表中的“n”个子项

时间:2015-07-29 10:18:28

标签: php mysql laravel laravel-5 blade

此问题与:Group by in Laravel 5

有关

基本上,我拥有的是一系列“群组”,每个群组可以拥有他们想要的尽可能多的子群组。所以看起来像这样:

  • 第1组
    • 第1组儿童
      • 第1组的孩子
        • 第1组1的孩子
  • 第2组

目前,我只能使用以下方式显示小组及其子女:

    <ul>
@foreach($contents as $content)
  <li>{{$content->title}}</li>
  @if($content->children->count() > 0)
    <ul>
      @foreach($content->children as $childContent)
        <li>{{$childContent->title}}</li>
      @endforeach
   </ul>
  @endif
@endforeach
</ul> 

如果我想添加更多层次的子项,我必须使用另一个if语句以及foreach语句对此进行编码。显然,当一个团体有n ^ 3,......孩子数时,这是不切实际的。

是否有解决此问题的动态while-loop方法?任何帮助将不胜感激!!

1 个答案:

答案 0 :(得分:1)

你需要的是一个递归部分 - 只要有更多的组级别要显示就会加载它。

// list_group.blade.php
<li>
  {{ $content->title }}
  @if($content->children->count() > 0)
    <ul>
      @foreach($content->children as $childContent)
        @include('list_group', array('content' => $childContent))
      @endforeach
    </ul>
  @endif
</li>

//in your template 
<ul>
  @foreach($contents as $content)
    @include('list_group', array('content' => $content))
  @endforeach
</ul>