Catégories
Laravel

Directives Blade

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

Les directives Blade permettent d'éviter le code spaghetti dans les templates

Directives Blade intégrées à Laravel

if, else, what else ?

Un grand classique, comme notre café Nespresso et notre illustre George !

Un petit George bien caféiné !! What else ?
Un petit George bien caféiné !! What else ?

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.

Directives Blade : un nombre non formaté

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 : un nombre au format monétaire grâce à une directive personnalisée

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.

Abonnement unique O2Switch à 5€/mois

Par HappyToDev

Absolument passionné depuis toujours par l'informatique et la programmation, je souhaite via ce blog vous faire passer un peu du savoir que j'ai accumulé depuis des années.
Et même, pourquoi pas, vous aider à faire le premier pas dans le développement web.

Vous êtes prêts ?
Alors allons y ensemble et n'oubliez pas que les débutants sont vraiment les bienvenus.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.