Laravel 5.3 Blade 模板新增 $loop 变量学习笔记

作者:袖梨 2022-06-25

什么是Blade指令?

Laravel的Blade模板语言提供了指令功能,这些指令其实是一些自定义标签 —— 以@开头,通常用于控制结构。如果你用Blade写过模板,就会对形如@if、@foreach这些指令非常熟悉。

这些指令通常都是相应PHP代码的等价物,例如@if(condition)等价于

$loop变量

在Laravel 5.3中,@foreach指令提供了更加强大的功能,在每一个@foreach循环体中都可以调用一个新的$loop变量。该变量是一个stdClass实例,包含了当前循环的元数据信息,让我们来看一下它提供的属性:

index:从1开始的循环索引,1意味着是第一个条目。
remaining:循环还有多少个条目,比如当前是3个中的第一个,那么会返回2;
count:循环总条目数
first:是否是第一个
last:是否是最后一个
depth:循环的层级
parent:如果循环位于另一个@foreach中,返回父循环引用,否则返回null

下面是一段示例代码:


        @foreach ($pages as $page)
           
  • {{ $page->title }} ({{ $loop->index }} / {{ $loop->count }})

  •     @endforeach

如果有嵌套循环,可以使用depth判断,并且通过$loop的parent属性获取相应信息:


        @foreach ($pages as $page)
           
  • {{ $loop->index }}: {{ $page->title }}
            @if ($page->hasChildren())
           

                  @foreach ($page->children() as $child)
                     
    • {{ $loop->parent->index }}.{{ $loop->index }}:
                      {{ $child->title }}

    •             @endforeach
             

            @endif
       

  •     @endforeach

就是这样简单、方便。

相关文章

精彩推荐