如何解决在 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 举报,一经查实,本站将立刻删除。