如何使用 Laravel blade 模板检查循环中没有匹配项
How to check for no matches in the loop using Laravel blade template
我有以下场景:
@foreach ($driver->delivery as $delivery)<!--loop over all deliveries -->
@if ($delivery->delivery_date==$whole_week["mon"])
{{$delivery->city}} , {{$delivery->state}}
@endif
@endforeach
它遍历所有送货,如果送货是星期一的匹配日,那么我会显示城市和州。
如果循环未产生匹配项,是否有任何 blade
显示消息 no delivery
的方式?或者我需要引入 $successful_match
变量,我将在其中存储 bool
以实现成功匹配? (下面的工作示例)
<?php $sunDelivery=false; ?>
@foreach ($driver->delivery as $delivery)<!--loop over all deliveries -->
@if ($delivery->delivery_date==$whole_week["sun"])
{{$delivery->city}} , {{$delivery->state}}
<? $sunDelivery=true; ?>
@endif
@endforeach
{{$sunDelivery ? '' : 'no delivery'}}
没有合适的语法来做到这一点。不鼓励在视图中这样做。
最正确的方法是预处理数据并将变量True/False发送到视图。
否则,您可以extend Blade adding a new command or using an extension package like this one。
恶作剧一:
传$sunValue
为false可以这样查看和设置:
@foreach( $driver->delivery as $delivery )
@if( ($sunDelivery) ? $delivery->delivery_date==$whole_week["sun"] : $sunDelivery=$delivery->delivery_date==$whole_week["sun"] )
(...)
通过这种方式,如果 $sunValue
为 False(默认),$sunValue
在评估之前设置为 True/False 条件,否则仅评估条件。
恕我直言,这个卑鄙的把戏比下面的更干净。
恶作剧2:
使用Comment/Uncomment:
{{--*/ $sunDelivery = False /*--}}
@foreach( $driver->delivery as $delivery )
@if( $delivery->delivery_date==$whole_week["sun"] )
{{--*/ $sunDelivery = True /*--}}
(...)
此方法有效,因为Blade注释在<?php /*...*/ ?>
中被转换,所以上面的语法变成了<?php /**/ command /**/ ?>
.
注意:两个代码均经测试有效。
我有以下场景:
@foreach ($driver->delivery as $delivery)<!--loop over all deliveries -->
@if ($delivery->delivery_date==$whole_week["mon"])
{{$delivery->city}} , {{$delivery->state}}
@endif
@endforeach
它遍历所有送货,如果送货是星期一的匹配日,那么我会显示城市和州。
如果循环未产生匹配项,是否有任何 blade
显示消息 no delivery
的方式?或者我需要引入 $successful_match
变量,我将在其中存储 bool
以实现成功匹配? (下面的工作示例)
<?php $sunDelivery=false; ?>
@foreach ($driver->delivery as $delivery)<!--loop over all deliveries -->
@if ($delivery->delivery_date==$whole_week["sun"])
{{$delivery->city}} , {{$delivery->state}}
<? $sunDelivery=true; ?>
@endif
@endforeach
{{$sunDelivery ? '' : 'no delivery'}}
没有合适的语法来做到这一点。不鼓励在视图中这样做。
最正确的方法是预处理数据并将变量True/False发送到视图。
否则,您可以extend Blade adding a new command or using an extension package like this one。
恶作剧一:
传$sunValue
为false可以这样查看和设置:
@foreach( $driver->delivery as $delivery )
@if( ($sunDelivery) ? $delivery->delivery_date==$whole_week["sun"] : $sunDelivery=$delivery->delivery_date==$whole_week["sun"] )
(...)
通过这种方式,如果 $sunValue
为 False(默认),$sunValue
在评估之前设置为 True/False 条件,否则仅评估条件。
恕我直言,这个卑鄙的把戏比下面的更干净。
恶作剧2:
使用Comment/Uncomment:
{{--*/ $sunDelivery = False /*--}}
@foreach( $driver->delivery as $delivery )
@if( $delivery->delivery_date==$whole_week["sun"] )
{{--*/ $sunDelivery = True /*--}}
(...)
此方法有效,因为Blade注释在<?php /*...*/ ?>
中被转换,所以上面的语法变成了<?php /**/ command /**/ ?>
.
注意:两个代码均经测试有效。