wake-up-neo.com

So geben Sie einen Standardwert zurück, wenn der Wert nicht für das Blade festgelegt wurde

Ich möchte wissen, wie ein Standardwert am besten angezeigt werden kann, wenn der angegebene Wert nicht festgelegt ist. Ich habe folgendes in einer Blade-Datei (ich kann nicht garantieren, dass der Schlüssel gesetzt ist, es hängt von einer Vielzahl von Faktoren ab).

{{ $foo['bar'] }}

Ich würde wissen, ob das Folgende der beste Weg ist, dies zu tun.

{{ (isset($foo['bar']) ? $foo['bar'] : 'baz' }}

oder gibt es einen besseren Weg, dies zu tun?

Vielen Dank :)

42
paquettg

Verwenden Sie den Nullkoaleszenzoperator von php:

{{ $variable ?? "Default Message" }}

Entfernt ab Laravel 5.7

Mit Laravel 4.1-5.6 könnte man das einfach so machen:

{{ $variable or "Default Message" }}

Es ist dasselbe wie:

echo isset($variable) ? $Variable : 'Default Message'; 
109
Jazerix

Die ternäre Shortcut-Syntax von PHP 5.3 funktioniert in Blade-Vorlagen:

{{ $foo->bar ?: 'baz' }}

Es funktioniert nicht mit undefinierten Variablen der obersten Ebene, eignet sich jedoch hervorragend für die Behandlung fehlender Werte in Arrays und Objekten.

14
joemaller

Seit Laravel 5.7 {{$Variable or "Default Message"}} wirft $Variable is not defined. Dies {{$Variable ?? "Default Message"}} funktioniert aber.

10
Edmund Sulzanok

Ich empfehle, den Standardwert in Ihrem Controller festzulegen, anstatt in Ihrer Ansicht einen Workaround durchzuführen.

Dies ist der beste Weg, da dadurch die Logik aus Ihrer Ansicht herausgehalten und das Markup der Ansicht sauber gehalten wird.

Zum Beispiel in Ihrem Controller, bevor Sie Daten an die Ansicht übergeben:

if(!isset($foo['bar'])){
     $foo['bar'] = 'baz';
}
4
Chris Bier

Während die Antwort von Chris B vollkommen gültig ist; Ich hatte das Gefühl, dass dies eine Frage ist, die eine alternative Antwort haben kann. Einige würden es vorziehen, ihre Controller nicht "fett" zu machen, und in diesem Fall könnte zumindest die Verwendung eines Presenters die Antwort sein, die Sie suchen, um eine zuzulassen Viel Flexibilität in Ihren Anwendungsansichten.

Schauen Sie sich folgendes an Projekt/Paket auf Github. Die Readme-Datei ist ziemlich robust und enthält eine Reihe von Beispielen, die Sie zum Laufen bringen.

Sie können dann genau das tun, was Sie gefragt haben, und einfach anrufen

{{ $foo['bar'] }}

ihrer Ansicht nach.

0
twmbx