Blade est le moteur de vue utilisé par Laravel. Il offre une syntaxe simplifiée pour exécuter de petits bouts de code dans une vue, par exemple pour vérifier une condition avant d'afficher une information ou encore pour boucler dans une collection.
Par exemple, il serait possible de boucler dans une collection à l'aide de la syntaxe PHP :
<?php foreach($produits as $produit) : ?>
<li><?= $produit->description; ?></li>
<?php endforeach; ?>
Avec Blade, le code est beaucoup plus clair :
@foreach($produits as $produit)
<li>{{ $produit->description }}</li>
@endforeach
▼Publicité Le texte se poursuit plus bas
À la base, tout ce que vous écrivez dans une vue sera transmis tel quel par Blade au navigateur. Vous pouvez donc entrer sans plus de flafla les balises HTML et le texte statique.
Il existe cependant des exceptions afin de permettre d'entrer des commentaires, d'afficher des variables, de tester des conditions et de faire des boucles.
Lorsque vous ajoutez un commentaire avec Blade, vous êtes assurés qu'il ne fera pas partie du code HTML généré.
{{-- menu principal ************************************************************************* --}}
Il est possible d'exécuter des fonctions PHP en les plaçant entre les symboles {{ et }}.
{{ route('produits.index') }}
Pour afficher le contenu d'une variable (que le contrôleur a transmis à la vue), simplement placer son nom entre {{ et }}.
{{ $produit->description }}
Remarquez que Blade se charge automatiquement de protéger contre certaines attaques XSS en appliquant la fonction htmlentities() sur le contenu ainsi affiché.
Il peut arriver, dans un contexte particulier, que les variables doivent être affichées sans passer par htmlentities(). Vous pouvez y arriver comme suit :
{!! $variable !!}
Attention : avec les points d'exclamation, votre site devient vulnérable aux attaques XSS. Vous devriez toujours utiliser les doubles accolades à moins d'avoir un besoin très particulier.
Pour vérifier si une variable existe :
@if (isset($variable))
...
@endif
Il est possible de spécifier une valeur à utiliser lorsqu'une variable est nulle.
L'opérateur PHP « ?: » est un opérateur binaire connu sous le nom opérateur Elvis.
En fait, cet opérateur utilisera la valeur de remplacement lorsque le premier opérande est évalué à false ou à null.
{{ $variable ?: 'Valeur à utiliser si nul ou faux' }}
L'opérateur Elvis est équivalent à cette syntaxe qui utilise l'opérateur ternaire :
{{ $variable ? $variable : 'Valeur à utiliser si nul ou faux' }}
Un résultat semblable sera obtenu à l'aide de l'opérateur de fusion null « ?? ».
La différence, c'est que l'opérateur de fusion null utilisera la valeur de remplacement lorsque le premier opérande est null ou lorsque la variable n'existe pas.
{{ $variable ?? 'Valeur à utiliser si nul ou inexistant' }}
L'opérateur de fusion null est équivalent à cette syntaxe qui utilise l'opérateur ternaire :
{{ isset($variable) ? $variable : 'Valeur à utiliser si nul' }}
Pour vérifier si une collection contient au moins un élément :
@if (!$produits->count())
<p>Il n'y a présentement aucun produit.</p>
<div><a class="stylebouton" href="{{ route('produits.create') }}">Ajouter</a></div>
@else
...
@endif
Pour tester une condition :
@if (...)
...
@elseif (...)
...
@else
...
@endif
Pour boucler dans les éléments d'une collection :
@foreach ($produits as $produit)
...
@endforeach
Dans la majorité des cas, la logique de l'application sera faite dans le contrôleur ou dans un autre fichier spécifique. La vue ne fera que de l'affichage avec possiblement quelques structures de contrôle.
Il existe pourtant des cas précis où le code sera plus clair si on ajoute un peu de PHP, par exemple l'initialisation d'une variable qui clarifiera le code qui suit.
Pour cela, il faut utiliser la directive @php.
@php
$uneVariable = ...;
@endphp
« Blade Templates ». Laravel. https://laravel.com/docs/master/blade
Site fièrement hébergé chez A2 Hosting.