web-dev-qa-db-fra.com

Laravel 4.2 blade: vérifier si vide

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).

19
Marten

essaye ça:

@if ($value !== '')
    {{ HTML::link($value,'some text') }}
@endif
14
soroush gholamzadeh

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
14
Jeff Puckett
{{ ($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>" : '' }}
5
lieroes

Avec php 7, vous pouvez utiliser l'opérateur de coalescence nulle. Ceci est un raccourci pour la réponse de @ m0z4rt.

{{ $variable ?? 'default' }}
4
Rajitha Bandara
{{ isset($variable) ? $variable : 'default' }}
1
m0z4rt

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
0
Rahul Gurung