限制Blade foreach循环中的结果

时间:2015-10-28 14:12:14

标签: laravel blade

好吧,所以我对Blade非常陌生,我确实设法获得了我在页面上要求的所有结果。现在我想在我的页面上只展示10个项目,我似乎很难用它,到目前为止尝试了array_slice没有任何成功。有什么建议吗?

我目前使用的代码

下面
        {{--@foreach ($element['subs']->slice(0, 10) as $item)--}}

@foreach ($element['subs'] as $item)
        <div class="highlight {{ $element['class'] }}">
            <div class="el-inner-news">

                <div class="image-news">
                    <a href="{{ $item['news-item']['slug'] }}"> <img src="{{ $item['news-item']['image'] or "/assets/frontend/baywest/images/newsholder.png" }}" class="center-img" alt="{{ $item['news-item']['title'] }}" /> </a>
                </div>

                <div class="desc-news">
                    <div class="title-highlight">
                        <a href="{{ $item['news-item']['slug'] }}">{{ $item['news-item']['title'] }}</a>
                    </div>

                    <div class="text-highlight">
                        {!! $item['news-item']['textfield'] !!}
                    </div>

                    <div class="learn-more-news">
                        <a href="{{ $item['news-item']['slug'] }}">{{ $item['news-item']['read-more'] or "Learn more" }}  </a>
                    </div>
                </div>

            </div>
        </div>
    @endforeach

提前致谢!

7 个答案:

答案 0 :(得分:16)

如果它是一个集合,可以采用更简洁的方法:

@foreach ($element['subs']->slice(0, 10) as $item)
 ...Code
@endforeach

收藏的另一种方式:

@foreach ($element['subs']->take(10) as $item)
 ...Code
@endforeach

或者如果它是一个数组:

@foreach (array_slice($element['subs'], 0, 10) as $item)
 ...Code
@endforeach

答案 1 :(得分:6)

您应该在控制器中限制结果,但是这里是如何在刀片中完成此操作的。不漂亮。

<?php $count = 0; ?>
@foreach ($element['subs'] as $item)
    <?php if($count == 10) break; ?>
    // Your code
    <?php $count++; ?>
@endforeach

答案 2 :(得分:5)

迟到,但要在laravel 5.4中扩展Pawel Bieszczad's answer,您可以使用loop variableindex属性:

@foreach ($element['subs'] as $item)
    @if($loop->index < 10)
        // Your code
    @endif
@endforeach

答案 3 :(得分:2)

Laravel 5.3起,就有一种使用Loop变量和break指令来执行此操作的刀片方式:

@foreach ($element['subs'] as $item)

  @if($loop->iteration > 10)

    @break

  @endif

  {{-- Your loop code here --}}

@endforeach

答案 4 :(得分:0)

采用方法可以帮助您

 <div class="col-md-4" style="margin-top:40px; margin-bottom:40px">
   @foreach($reviews->take(10) as $review)
      <div  class="carousel-cell">
           {{ $review->id }}
      </div>
   @endforeach
</div>

第二种方式

<div class="col-md-4" style="margin-top:40px; margin-bottom:40px">
   @foreach($reviews as $count => $review)
    @if($count< 10)
      <div  class="carousel-cell">
           {{ $review->id }}
      </div>
    @endif
   @endforeach
</div>

答案 5 :(得分:0)

据我所知,最简单的方法是使用 take(N) 函数,其中 N 代表循环次数。

@foreach($element->take(5) as $item)
  ..your code
@endforeach

示例

@foreach($posts->take(5) as $post)
  {{ $post->message }}
@endforeach

答案 6 :(得分:-1)

从 Laravel 文档你可以做一个 for 循环

@for ($i = 0; $i < 10; $i++)
     <div class="card" {{ $i }}>
       // Whatever inside here
     </div>
@endfor

https://laravel.com/docs/8.x/blade