Control Structures
Neben der Vererbung von Templates und der Anzeige von Daten bietet Blade auch komfortable Verknüpfungen für gängige PHP-Steuerstrukturen, wie z.B. bedingte Anweisungen und Schleifen. Diese Abkürzungen bieten eine sehr saubere, prägnante Möglichkeit, mit PHP-Kontrollstrukturen zu arbeiten, während sie gleichzeitig mit ihren PHP-Pendants vertraut bleiben.
If Statements
Sie können if-Anweisungen mit den Anweisungen @if, @elseif, @else und @endif erstellen. Diese Direktiven funktionieren identisch zu ihren PHP-Gegenstücken:
@if (count($records) === 1)
I have one record!
@elseif (count($records) > 1)
I have multiple records!
@else
I don't have any records!
@endif
Der Einfachheit halber bietet Blade auch eine @unless-Anweisung:
@unless (Auth::check())
You are not signed in.
@endunless
Zusätzlich zu den bereits besprochenen Bedingungsdirektiven können die @isset- und @empty-Direktiven als bequeme Abkürzungen für ihre jeweiligen PHP-Funktionen verwendet werden:
@isset($records)
// $records is defined and is not null...
@endisset
@empty($records)
// $records is "empty"...
@endempty
Authentication Directives
Die @auth und @guest Direktiven können verwendet werden, um schnell festzustellen, ob der aktuelle Benutzer authentifiziert ist oder ein Gast ist:
@auth
// The user is authenticated...
@endauth
@guest
// The user is not authenticated...
@endguest
Bei Bedarf können Sie den Authentifizierungsschutz angeben, der bei der Verwendung der @auth und @guest Direktiven geprüft werden soll:
@auth('admin')
// The user is authenticated...
@endauth
@guest('admin')
// The user is not authenticated...
@endguest
Section Directives
Sie können mit der @hasSection-Direktive prüfen, ob ein Abschnitt einen Inhalt hat:
@hasSection('navigation')
<div class="pull-right">
@yield('navigation')
</div>
<div class="clearfix"></div>
@endif
Switch Statements
Switch-Anweisungen können mit den Anweisungen @switch, @case, @break, @default und @endswitch erstellt werden:
@switch($i)
@case(1)
First case...
@break
@case(2)
Second case...
@break
@default
Default case...
@endswitch
Loops
Zusätzlich zu den bedingten Anweisungen bietet Blade einfache Direktiven für die Arbeit mit den Schleifenstrukturen von PHP. Auch hier funktioniert jede dieser Direktiven identisch zu ihren PHP-Gegenstücken:
@for ($i = 0; $i < 10; $i++)
The current value is {{ $i }}
@endfor
@foreach ($users as $user)
<p>This is user {{ $user->id }}</p>
@endforeach
@forelse ($users as $user)
<li>{{ $user->name }}</li>
@empty
<p>No users</p>
@endforelse
@while (true)
<p>I'm looping forever.</p>
@endwhile
Beim Schleifenbetrieb können Sie die Schleifenvariable (loop variable) verwenden, um wertvolle Informationen über die Schleife zu erhalten, z.B. ob Sie sich in der ersten oder letzten Iteration durch die Schleife befinden.
Bei Verwendung von Schleifen können Sie die Schleife auch beenden oder die aktuelle Iteration überspringen:
@foreach ($users as $user)
@if ($user->type == 1)
@continue
@endif
<li>{{ $user->name }}</li>
@if ($user->number == 5)
@break
@endif
@endforeach
Sie können auch die Bedingung mit der Erklärung der Richtlinie in einer Zeile einfügen:
@foreach ($users as $user)
@continue($user->type == 1)
<li>{{ $user->name }}</li>
@break($user->number == 5)
@endforeach
Beim Schleifenbetrieb steht eine $loop-Variable innerhalb Ihrer Schleife zur Verfügung. Diese Variable bietet Zugriff auf einige nützliche Informationen, wie z.B. den aktuellen Schleifenindex und ob dies die erste oder letzte Iteration durch die Schleife ist:
@foreach ($users as $user)
@if ($loop->first)
This is the first iteration.
@endif
@if ($loop->last)
This is the last iteration.
@endif
<p>This is user {{ $user->id }}</p>
@endforeach
Wenn Sie sich in einer geschachtelten Schleife befinden, können Sie auf die $loop-Variable der Elternschleife über die Elterneigenschaft (parent property) zugreifen:
@foreach ($users as $user)
@foreach ($user->posts as $post)
@if ($loop->parent->first)
This is first iteration of the parent loop.
@endif
@endforeach
@endforeach
Die Variable $loop enthält auch eine Vielzahl anderer nützlicher Eigenschaften:
Property |
Description |
$loop->index |
Der Index der aktuellen Schleifeniteration (beginnt bei 0). |
$loop->iteration |
Die aktuelle Schleife (beginnt bei 1). |
$loop->remaining |
Die in der Schleife verbleibenden Iterationen. |
$loop->count |
Die Gesamtzahl der Elemente in dem zu iterierenden Array. |
$loop->first |
Ob dies die erste Iteration durch die Schleife ist. |
$loop->last |
Ob dies die letzte Iteration durch die Schleife ist. |
$loop->even |
Ob dies eine gerade Iteration durch die Schleife ist. |
$loop->odd |
Ob dies eine ungerade Iteration durch die Schleife ist. |
$loop->depth |
Die Schachtelungsebene der aktuellen Schleife. |
$loop->parent |
Wenn in einer geschachtelten Schleife, die Schleifenvariable des Elternteils. |
Comments
Blade erlaubt Ihnen auch, Kommentare in Ihren Ansichten zu definieren. Im Gegensatz zu HTML-Kommentaren sind die Kommentare von Blade jedoch nicht in dem von Ihrer Anwendung zurückgegebenen HTML enthalten:
{{-- This comment will not be present in the rendered HTML --}}
PHP
In einigen Situationen ist es nützlich, PHP-Code in Ihre Ansichten einzubetten. Sie können die Blade @php-Direktive verwenden, um einen Block von einfachem PHP innerhalb Ihres Templates auszuführen:
@php
//
@endphp
Obwohl Blade diese Funktion bietet, kann die häufige Verwendung dieser Funktion ein Signal dafür sein, dass Sie zu viel Logik in Ihre Vorlage eingebettet haben.