Laravel Blade est le moteur de template de Laravel. Il est simple et performant et en plus il recèle tout un tas de fonctionnalités qui méritent vraiment d’être explorées, notamment les directives blade et plus spécifiquement les directives blade personnalisées.
Aujourd’hui je vais te parler de ce que peuvent t’apporter les directives blade pour éviter dans nos templates Blade de faire du code spaghetti illisible.
Sommaire des Directives Blade

Directives Blade intégrées à Laravel
if, else, what else ?
Un grand classique, comme notre café Nespresso et notre illustre George !

D’ailleurs, aucun développeur digne de ce nom code sans une bonne machine à café. Voici, une bonne machine à café, robuste et fiable si tu souhaites t’équiper et rejoindre la guilde des développeurs caféinés !! 😀
C’est bon ? tu as ta dose de caféine ? Oui, alors on continue.
La directive Blade @if, @then et @else nous permet d’introduire la première forme de conditions dans nos templates Blade.
Comment ? Tu es bien curieux et tu as raison. Voyons à présent tout cela en détail.
@if (count($readedbooks) == 1)
You have read only one book :-( !
@elseif (count($readedbooks > 1)
Great, you have read many books :-)
@else
Oh no, you don't have read any book :-( :-( :-( ...
@endif
Qu’est ce que nous apprends ce code ?
Le premier @if
vérifie si la variable $readedbooks
est égale à 1, si c’est le cas le template blade affichera le message : ‘You have read only one book 🙁 !’
Tu aurai pu lire un peu plus, non ?
L’instruction suivante @elseif
permet de tester une autre condition. Ici avec ce @elseif
tu vas tester si la variable $readedbooks
est supérieure strictement à 1. Si c’est le cas, le template Blade affichera le message ‘Great, you have read many books :-)’
Toi, tu es le premier de la classe ou alors je ne m’y connais pas ! 😀
Enfin, regardes ce petit @else
tout seul sans aucune condition à vérifier.
« A quoi sert il ? » t’entends je déjà chuchoter.
C’est un garde fou, mon prince. Si aucune des deux conditions évoquées plus haut n’est remplie, il rentre en action, tel le dernier bouclier contre la chute de l’humanité….
Oui, là j’avoue que là ça va un peu trop loin 😀
En fait, tout simplement ce @else
va s’activer dans le cas où ici la variable $readedbooks
est égale à zéro ou même en dessous (-1 par exemple). En fait, toute valeur qui n’est pas ‘1’ ou supérieur à ‘1’, donc par voie de conséquence tout ce qui est strictement inférieur à 1.
Pour conclure, la directive @endif
permet d’indiquer au moteur qui interprète les fichiers de template Blade que nous en avons fini avec notre condition @if
de départ.
Est ce plus clair ainsi à présent ? 😉
Quelques variantes bien pratiques : @isset, @empty @unless
Ces trois nouvelles directives vont te permettre de prendre des raccourcis avec les directives @if, @then et @else.
@isset
et @empty
vont te permettre d’effectuer le pendant de leur homonymes en fonctions php isset() et empty().
@isset($readedbooks)
// $readedbooks is defined and is not null...
@endisset
@empty($readedbooks)
// $readedbooks var is "empty"...
@endempty
@unless
quant à elle permet l’affichage d’un morceau de template tant qu’une condition est vraie :
@unless (@empty($readedbooks))
Oh no, you don't have read any book :-( :-( :-( ...
@endunless
Les directives d’authentification @auth, @guest
Elles aussi vont te faire gagner pas mal de temps, en vérifiant le statut des utilisateurs connectés ou pas d’ailleurs !
Tu peux les utiliser de façon très simple, comme ceci :
@auth
// l'utilisateur est authentifié...
@endauth
@guest
// L'utilisateur n'est pas authentifié, c'est un invité...
@endguest
Tu l’auras aisément compris, ces directives permettront l’affichage d’un contenu spécifique selon que l’utilisateur est connecté ou non.
Directives Blade personnalisées
Laravel fournit déjà un bon nombre de directives pour pallier à bien des situations. Mais il arrivera forcément un moment où il te sera nécessaire de créer tes propres directives.
Nous allons donc voir à présent commet créer ses propres directives.
Directives Blade : format monétaire
La situation est simple tu as besoin de formater un nombre dans un format monétaire.

Nous allons créer une directive ‘money
‘ afin de nous aider à formater cela de façon efficace et élégante.
Dans le fichier AppServiceProvider.php
, au sein de la fonction ‘boot
‘, ajoutes cette directive :
/**
* Blade directive to format number to currency
*/
Blade::directive('money', function ($expression) {
/* return "<?php echo money_format('%+n', $expression); ?>"; */
return "<?php echo number_format($expression, 2) . ' €'; ?>";
});
Note bien la ligne commentée qui permet un formatage plus simple via la fonction dédiée de php money_format
. Etant donné que je travaille sous Windows avec mon bon vieux Laragon, cette fonction ne m’est pas accessible, c’est pourquoi j’utilise une version bricolée à la Mc Gyver pour arriver au même résultat.
Si tu es sous un système Linux, tu peux utiliser sans problème la fonction money_format
.
Une fois la directive mise en place, il est nécessaire de vider le cache des vues avec la commande :
php artisan view:clear
Il est maintenant possible d’utiliser la directive @money
que nous venons de créer directement dans notre template Blade.
<div class="h1 mb-0 font-weight-bold text-gray-800 text-center">@money($giftsAmount / $giftsCount )</div>
Cela nous permettra de formater correctement notre bloc comme ci-dessous :

Directives Blade : le formatage des nombres décimaux
Evidemment une fois que l’on a vu le format monétaire, le formatage des nombres s’impose de lui-même.
Il découle directement de ce que l’on a vu plus haut et il est donc simple à programmer en reprenant l’existant :
/**
* Blade directive to format number with 2 decimals
*/
Blade::directive('formatNumber', function ($expression) {
return "<?php echo number_format($expression, 2); ?>";
});
Après un petit nettoyage du cache de nos fichiers vues :
php artisan view:clear
un @formatNumber('100,456452')
renverra 100,45
.
Directives Blade : récupérer facilement des informations de configuration
Imagine que tu souhaites afficher fièrement le numéro de version de ta super nouvelle application :D.
Le numéro de version de ton application va logiquement prendre place dans votre fichier .env, par exemple sous l’intitulé ‘APP_VERSION
‘ pour faire original.
APP_VERSION="v0.0.5"
A présent, dans le fichier app/config/app.php
, rajoutes cette ligne :
'version' => env('APP_VERSION', 'vx.x.x'),
Enfin nous créons une directive appelé ‘config
‘ avec le code suivant :
Blade::directive('config', function ($key) {
return "<?php echo config('app.' . $key); ?>";
});
Cette directive va aller chercher dans le fichier ‘app/config/app.php
‘ la clé de configuration $key
.
Il ne nous reste plus qu’à appeler dans notre template à l’endroit de notre choix la directive de la façon suivante :
@config('version')
Avec ce que nous avons défini précédemment, à la place de cette directive s’affichera le texte ‘v0.0.5’.
Conclusion sur les directives Blade
Nous avons vu dans ce petit article que Laravel dispose de plusieurs directives pour aider au quotidien dans la programmation des templates.
Nous avons également vu qu’il était facile de configurer des directives blade personnalisées.
N’oubliez pas que Laravel dispose d’un grand nombre de directives que vous pourrez retrouver dans la partie de la documentation consacrée à Blade.