Dans Laravel blade vous pouvez faire:
{{ $variable or 'default' }}
Cela vérifiera si une variable est définie ou non. J'obtiens des données de la base de données, et ces variables sont toujours définies, donc je ne peux pas utiliser cette méthode.
Je recherche une fonction "lame" abrégée pour ce faire:
{{ ($variable != '' ? $variable : '') }}
Il est difficile d'utiliser cette pièce ou ce code pour faire cette beacuse de, je ne sais pas comment le faire avec un lien ou quelque chose comme ça:
<a href="{{ $school->website }}" target="_blank">{{ $school->website }}</a>
J'ai essayé:
{{ ($school->website != '' ? '<a href="{{ $school->website }}" target="_blank">{{ $school->website }}</a>' : '') }}
Mais ça ne marche pas. Et, je voudrais garder mon code aussi court que possible;)
Quelqu'un peut-il me l'expliquer?
MISE À JOUR
Je n'utilise pas de foreach car, j'obtiens un seul objet (une école) de la base de données. Je l'ai passé de mon contrôleur à ma vue avec:
$school = School::find($id);
return View::make('school.show')->with('school', $school);
Donc, je ne veux pas créer une @if($value != ''){}
autour de chaque variable $ (comme $ school-> name).
essaye ça:
@if ($value !== '')
{{ HTML::link($value,'some text') }}
@endif
Je préfère le @unless
directive pour la lisibilité dans cette circonstance.
@unless ( empty($school->website) )
<a href="{{ $school->website }}" target="_blank">{{ $school->website }}</a>
@endunless
{{ ($school->website != '' ? '<a href="{{ $school->website }}" target="_blank">{{ $school->website }}</a>' : '') }}
changer pour
{{ ($school->website != '') ? '<a href="' . $school->website . '" target="_blank">' . $school->website . '</a>' : '' }}
ou le même code
{{ ($school->website != '') ? "<a href='$school->website' target='_blank'>$school->website</a>" : '' }}
Avec php 7, vous pouvez utiliser l'opérateur de coalescence nulle. Ceci est un raccourci pour la réponse de @ m0z4rt.
{{ $variable ?? 'default' }}
{{ isset($variable) ? $variable : 'default' }}
Je me demande pourquoi personne n'a parlé de $variable->isEmpty()
ça a l'air mieux que les autres. Peut être utilisé comme:
@if($var->isEmpty())
Do this
@else
Do that
@endif