我有以下场景:
@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发送到视图。
否则,您可以添加一个新命令或使用像这样的扩展包来扩展Blade。
肮脏的把戏1:
将$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条件,否则仅对条件求值。
IMHO,这个肮脏的把戏比下面更干净。
肮脏的把戏2:
使用注释/取消注释:
{{--*/ $sunDelivery = False /*--}}
@foreach( $driver->delivery as $delivery )
@if( $delivery->delivery_date==$whole_week["sun"] )
{{--*/ $sunDelivery = True /*--}}
(...)
这种方法之所以有效,是因为Blade注释是在<?php /*...*/ ?>
中转换的,所以上面的语法变成了<?php /**/ command /**/ ?>
。
注意:这两个代码都是在工作时测试的。