web-dev-qa-db-fra.com

Comment faire écho à une valeur par défaut si la valeur n'est pas définie blade

Je voudrais savoir quelle serait la meilleure façon d'afficher une valeur par défaut si la valeur donnée n'est pas définie. J'ai les éléments suivants dans un fichier lame (je ne peux pas garantir que la clé est définie, cela dépend d'une multitude de facteurs).

{{ $foo['bar'] }}

Je saurais si ce qui suit est la meilleure façon de procéder,

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

ou existe-t-il une meilleure façon de procéder?

Merci :)

42
paquettg

Utilisez l'opérateur de coalescence nulle de php:

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

Supprimé à partir de Laravel 5.7

Avec Laravel 4.1-5.6 vous pouvez simplement le faire comme ceci:

{{ $variable or "Default Message" }}

C'est la même chose que:

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

La syntaxe de raccourci ternaire de PHP 5.3 fonctionne dans les modèles Blade:

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

Il ne fonctionnera pas avec des variables de niveau supérieur non définies, mais il est idéal pour gérer les valeurs manquantes dans les tableaux et les objets.

14
joemaller

Depuis Laravel 5.7 {{$Variable or "Default Message"}} jette $Variable is not defined. Cette {{$Variable ?? "Default Message"}} fonctionne cependant.

10
Edmund Sulzanok

Je recommande de définir la valeur par défaut dans votre contrôleur au lieu de faire un contournement dans votre vue.

C'est le meilleur moyen, car il garde la logique hors de votre vue et maintient le balisage de la vue propre.

Par exemple dans votre contrôleur, avant de passer des données à la vue:

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

Alors que la réponse de Chris B est parfaitement valable; J'ai senti que c'est peut-être une question qui peut avoir une réponse alternative. Certains préféreraient ne pas rendre leurs contrôleurs "gras" et dans ce cas au moins, l'utilisation d'un Presenter pourrait être la réponse que vous cherchez à autoriser un une grande flexibilité dans les vues de votre application.

Jetez un oeil à ce qui suit projet/package sur Github. Le fichier Lisezmoi est assez robuste avec un certain nombre d'exemples pour vous aider à démarrer.

Il vous permettra de faire exactement ce que vous avez demandé et d'appeler simplement

{{ $foo['bar'] }}

à votre avis.

0
twmbx