微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Laravel foreach 循环中设置变量

如何解决在 Laravel foreach 循环中设置变量

我刚刚开始使用该框架。在打开 foreach 之后的普通 PHP 中,我会设置变量然后关闭 PHP 标签,但是根据我的计算,你必须执行 Laravel @foreach 标签,然后打开和关闭 {{ 1}}。有没有办法解决这个问题,因为它看起来需要很多额外的工作和代码

@PHP

解决方法

由于blade 不是PHP,因此您必须使用该指令返回PHP。但是您可以设置/使用变量而无需在您的情况下这样做:

@foreach($steps as $i => $row)
    <div class="steps-item grid-wrap">
        <div class="number"
        @if($text || $title)
            <div class="text-wrap">
                @if($title)
                    <h2>{{ $row->title }}</h2>
                @endif
                {!! $row->text !!}
            </div>
            @php
                $i++;
            @endphp
        @endif
    </div>{{--END steps-item--}}
@endforeach

如果你还想设置变量,Laravel 有一个名为 alexdover/blade-set 的包。但正如@brombeer 指出的那样,在大多数情况下,强烈建议在将所有必要的变量传递给视图之前在控制器中设置所有必要的变量。

,

使用 laravel 提供的循环变量:

$loop->iteration    The current loop iteration (starts at 1).

它会在每次循环迭代中自动递增。

e.g:
First iteration = $loop->iteration => 1 ;
Second iteration = $loop->iteration => 2 ;
so on until loop ends.

检查文档: The Loop Variables

,

您可以像这样使用带有 sizeof($steps) 的 @for 指令:

@for($i=0; $i<= sizeof($steps)-1; $i++)

@endfor
,

@foreach ($steps as $row)

<div class="steps-item grid-wrap">
    <div class="number">
        <div class="text-wrap">
            @if ($row->title != '')
                <h2>{{$row->title}}</h2>
               /* if you want to display another title when its blank you can 
                use if-else here otherwise not need to use if conditions for 
                title and text */
            @endif
            @if ($row->text != '')
               {!! $row->text !!}
            @endif
        </div>
    </div>
</div>

@endforeach

{{-- 例如,您有 $steps 值,例如

$steps = 大批( [0] -> 1,[1] -> '标题',[2] -> '文本' );

如果你想要这个数组键值对,你必须使用@foreach @foreach ($steps as $key=>$value) @endforeach

您只能在@foreach 循环中使用键值 --}}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。