2017-10-07 70 views
0

我需要显示某个图片。如果图片有is_primary属性填充和真实,那么我需要显示该图片。否则,我应该只显示任何第一个。这是我的代码。这是行不通的,我看到is_primary图片和第一。我究竟做错了什么?刀片中的过滤阵列

@php 
    $check = 0 
@endphp 
@foreach ($ad->photos as $photo) 
    @if ($photo->is_primary == true) 
    <img src="{{$photo->filename}}" alt="{{$ad->name}}" class="card-image"> 
    @php 
     $check = 1 
    @endphp 
    @endif 
@endforeach 

@if ($check > 0) 
    <img src="{{$ad->photos->first()->filename}}" alt="{{$ad->name}}" class="card-image"> 
@endif 
+0

不应该这是在控制器?这听起来像商业逻辑而不是简单的视图逻辑。 –

+0

我将整个对象传递给一个视图,但是也许我可以在将数据发送到视图之前做一些事情 – Kira

回答

0

你有问题在你的逻辑。如果is_primary为真,则显示图像并将标记变量设置为。和循环结束时,你正在检查$check > 0所以它$check =1当你需要添加条件$check == 0

@php 
    $check = 0 
@endphp 
@foreach ($ad->photos as $photo) 
    @if ($photo->is_primary == true) 
    <img src="{{$photo->filename}}" alt="{{$ad->name}}" class="card-image"> 
    @php 
     $check = 1 
    @endphp 
    @endif 
@endforeach 

@if ($check == 0) 
    <img src="{{$ad->photos->first()->filename}}" alt="{{$ad->name}}" class="card-image"> 
@endif 

或者你可以检查!真= 1

@if ($check != 1) 
     <img src="{{$ad->photos->first()->filename}}" alt="{{$ad->name}}" class="card-image"> 
    @endif 
+0

我仍然可以看到两个图片。 is_primary和第一个。我做了这个$ check!= 1,它工作。我不认为我知道它是如何工作的!= – Kira

+0

我编辑了我的答案,你可以检查它 –

+0

阅读我的答案我已经解释了为什么你必须检查'!= 1'希望你能得到它 –