限制Blade foreach循环中的结果

Ste*_*der 6 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
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Mrq*_*ion 23

如果它是一个集合,更简洁的方法可能是这样:

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

另一种收藏方式:

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

或者如果它是一个数组:

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

  • 这就是让优秀程序员成为专家的原因 :)) 更干净的代码 == 上帝拯救了一只小猫 :) (2认同)

Paw*_*zad 9

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

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


Gas*_*ass 8

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

@foreach($element->take(5) as $item)
  ..your code
@endforeach
Run Code Online (Sandbox Code Playgroud)

例子

@foreach($posts->take(5) as $post)
  {{ $post->message }}
@endforeach
Run Code Online (Sandbox Code Playgroud)


was*_*ful 6

较晚,但是要扩展laravel 5.4中Pawel Bieszczad的答案,可以使用loop变量index属性:

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


Adr*_*pez 6

Laravel 5.3 开始,有一种刀片方式可以通过使用 Loop 变量和 break 指令来做到这一点:

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

  @if($loop->iteration > 10)

    @break

  @endif

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

@endforeach
Run Code Online (Sandbox Code Playgroud)