wake-up-neo.com

Laravel-Klinge leer

Ich möchte überprüfen, ob mein Foreach leer ist, sodass das grundlegende HTML-Markup nicht mit keinen Ergebnissen angezeigt wird. Ich versuche, es in eine if-Anweisung einzuwickeln, und wenn es leer ist, machen Sie nichts weiter als foreach. 

@if ($status->replies === '')

@elseif
<div class="media-body reply-body">
    @foreach ($status->replies as $reply)
        <p>{{ $reply->body }}</p>
    @endforeach
</div>
@endif

@if (!(empty($status->replies))
<div class="media-body reply-body">
    @foreach ($status->replies as $reply)
        <div class="media">
            <a class="pull-left" href="{{ route('profile.index', ['username' => $reply->user->username]) }}">
                <img class="media-object" alt="{{ $reply->user->getNameOrUsername() }}" src="{{ $reply->user->getAvatarUrl() }}">
            </a>
            <div class="media-body">
                <h5 class="media-heading"><a href="{{ route('profile.index', ['username' => $reply->user->username]) }}">{{ $reply->user->getNameOrUsername() }}</a></h5>
                <p>{{ $reply->body }}</p>
                <ul class="list-inline list-replies">
                    <li>
                        <a href="{{ route('status.like', ['statusId' => $reply->id]) }}"><i class="fa fa-thumbs-up"></i></a>
                    {{ $reply->likes->count() }} {{ str_plural('like', $reply->likes->count()) }}</li>
                    <li>{{ $reply->created_at->diffForHumans() }}</li>
                </ul>
            </div>
            <hr>
        </div>
    @endforeach
</div>
@endif
30
Sam

Überprüfen Sie die Dokumentation für das beste Ergebnis:

@forelse($status->replies as $reply)
    <p>{{ $reply->body }}</p>
@empty
    <p>No replies</p>
@endforelse
132
cre8

Ich denke, Sie versuchen zu prüfen, ob das Array leer ist oder nicht. 

@if(!$result->isEmpty())
     // $result is not empty
@else
    // $result is empty
@endif

ReferenzisEmpty ()

26
Kiran Subedi

Echo von Daten, wenn sie vorhanden sind

Manchmal möchten Sie vielleicht eine Variable wiederholen, sind sich jedoch nicht sicher, ob die Variable festgelegt wurde. Wir können dies in verbose PHP Code so ausdrücken:

{{ isset($name) ? $name : 'Default' }}

Anstatt eine ternäre Anweisung zu schreiben, bietet Ihnen Blade jedoch folgende praktische Abkürzung:

{{ $name or 'Default' }}

Wenn in diesem Beispiel die Variable $ name vorhanden ist, wird ihr Wert angezeigt. Wenn es jedoch nicht vorhanden ist, wird der Word-Standard angezeigt.

Von https://laravel.com/docs/5.4/blade#displaying-data

4
Nabeel Shah

Es ist ein Array, daher funktioniert ==== '' nicht (das === bedeutet, dass es eine leere Zeichenfolge sein muss.) 

Verwenden Sie count () , um zu identifizieren, dass das Array über Elemente verfügt (count gibt eine Zahl zurück, 1 oder mehr ergibt "true", 0 = false)

@if (count($status->replies) > 0)
 // your HTML + foreach loop
@endif
2
William Turrell

Sie sollten leer verwenden ()

@if (!empty($status->replies)) 

<div class="media-body reply-body">
    @foreach ($status->replies as $reply)
        <p>{{ $reply->body }}</p>
    @endforeach
</div>

@endif

Sie können count verwenden, aber wenn das Array größer ist, dauert es länger, wenn Sie nur wissen müssen, ob das leere Feld leer ist.

2
iain

Mit dem folgenden Code kann man zuerst überprüfen, ob die Variable mit der Anweisung @isset of laravel) gesetzt ist oder nicht und dann mit @unless of laravel) prüfen, ob das Array leer ist oder nicht = Direktive

@if(@isset($names))
    @unless($names)
        Array has no value
    @else
        Array has value

        @foreach($names as $name)
            {{$name}}
        @endforeach

    @endunless
@else
    Not defined
@endif
0
user3216114

Dies ist meine beste Lösung, wenn ich die Frage gut verstanden habe:

Verwenden Sie die $object->first()-Methode, um den Code in der if-Anweisung einmal auszuführen, dh in der ersten Schleife. Dasselbe Konzept trifft auf $object->last() zu.

    @if($object->first())
        <div class="panel user-list">
          <table id="myCustomTable" class="table table-hover">
              <thead>
                  <tr>
                     <th class="col-email">Email</th>
                  </tr>
              </thead>
              <tbody>
    @endif

    @foreach ($object as $data)
        <tr class="gradeX">
           <td class="col-name"><strong>{{ $data->email }}</strong></td>
        </tr>
    @endforeach

    @if($object->last())
                </tbody>
            </table>
        </div>
    @endif