Forelse funktioniert in Laravel nicht richtig?
Meine Laravel-Version ist 5.4.36. Ich möchte verwenden forelse
, um eine Nachricht anzuzeigen, wenn die Bedingung nicht erfüllt ist.
@forelse ($items as $item)
<p>
@if ($item->quantity<$item->minimum_no)
<span class="label label-danger">Item {{$item->name}} need to be ordered now ! </span>
@elseif($item->quantity<($item->minimum_no+10))
<span class="label label-warning">Item {{$item->name}} is low !</span>
@endif
</p>
@empty
<p>No message</p>
@endforelse
Die Meldung wird jedoch nur angezeigt, wenn die Bedingung erfüllt ist. Wenn es ist @empty
, wird nichts angezeigt.
@forelse
verhält sich genau wie @foreach
bei einem diff, der ein @empty
Befehl ist, der funktioniert, wenn Ihr Array
im folgenden Beispiel $users
leer war, wenn er leer war, no users
wird dann platziert:
@forelse ($users as $user)
<li>{{ $user->name }}</li>
@empty
<p>No users</p>
@endforelse
Wenn in Ihrem Code $item
leer ist, <p>No message</p>
wird es platziert und wenn es ein oder mehrere Elemente enthält if..else...
, funktioniert es
UPDATE hängt von Ihrem Zustand ab, wenn es sich bei Ihrem Zustand um Artikel, aber nicht um Artikel handelt, daher benötigen Sie eine zusätzliche Variable, um sie am Ende zu überprüfen oder so ähnlich:
<?php $elseMsg='<p>No message</p>';?>
@foreach ($items as $item)
<p>
@if ($item->quantity<$item->minimum_no)
<?php $elseMsg='';?>
<span class="label label-danger">Item {{$item->name}} need to be ordered now ! </span>
@elseif($item->quantity<($item->minimum_no+10))
<?php $elseMsg='';?>
<span class="label label-warning">Item {{$item->name}} is low !</span>
@endif
</p>
@endforelse
{{$elseMsg}}