2017-10-07 1 views
0

Je dois montrer une certaine image. Si une image a is_primary propriété rempli et vrai alors j'ai besoin de montrer cette image. Sinon, je devrais simplement afficher ce qui est en premier. Voici mon code. Cela ne fonctionne pas, je vois à la fois is_primary photo et d'abord. Qu'est-ce que je fais mal?Tableau de filtrage dans la lame

@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

Si pas dans le contrôleur? Cela ressemble à la logique métier et non à la simple logique de vue. –

+0

Je passe l'objet entier à une vue, mais oui peut-être que je peux faire quelque chose avant d'envoyer des données à une vue – Kira

Répondre

0

Vous avez un problème dans votre logique. Si is_primary est vrai, vous affichez l'image et définissez la variable d'indicateur sur . Et la fin de la boucle que vous archivez $check > 0 donc son vrai quand $check =1 vous devez ajouter la condition $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 

OU vous pouvez vérifier! = 1

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

Je reçois toujours les deux photos. is_primary et le premier. J'ai fait ce $ check! = 1 et cela a fonctionné. Je ne pense pas que je comprends comment cela fonctionne! = – Kira

+0

J'ai édité ma réponse, vous pouvez le vérifier –

+0

Lire ma réponse Je vous ai expliqué pourquoi vous devez vérifier '! = 1' J'espère que vous l'obtiendrez –