2016-04-15 42 views
0

在循環中沒有比賽,我有以下情形:如何檢查使用Laravel刀模板

@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'}} 
+0

邏輯工作正常,我想知道是否有'刀片'的方式做到這一點,而不使用'<?php ...' – Andrew

回答

0

有沒有適當的語法來做到這一點。一種觀點認爲這樣做是令人沮喪的。

最正確的方法是預處理數據並向視圖發送變量True/False。

否則,您可以extend Blade添加一條新命令或使用擴展包如this one

骯髒的伎倆1:

$sunValue虛假查看和設置它以這樣的方式

@foreach($driver->delivery as $delivery) 
    @if(($sunDelivery) ? $delivery->delivery_date==$whole_week["sun"] : $sunDelivery=$delivery->delivery_date==$whole_week["sun"]) 
    (...) 

通過這種方式,如果$sunValue爲False(默認值),$sunValue設爲評估前爲真/假條件,否則只評估條件。

恕我直言,這個骯髒的把戲比以下更乾淨。

使壞2:

使用註釋/取消註釋:

{{--*/ $sunDelivery = False /*--}} 
@foreach($driver->delivery as $delivery) 
    @if($delivery->delivery_date==$whole_week["sun"]) 
     {{--*/ $sunDelivery = True /*--}} 
     (...) 

,此方法有效,因爲刀片的意見在<?php /*...*/ ?>轉換,所以上面的語法變得<?php /**/ command /**/ ?>


注意:兩個代碼都測試爲工作。