Les composants Blade

Les composants Blade

Les composants Blade permettent de créer des morceaux de vues réutilisables dans une application Laravel. Ils sont particulièrement utiles pour les éléments d’interface utilisateur qui apparaissent fréquemment, tels que les boutons, les cartes, les formulaires, etc.

Création d’un composant Blade

Pour créer un composant Blade, vous pouvez utiliser la commande Artisan suivante :

php artisan make:component NomDuComposant

Cela créera deux fichiers :

  • Un fichier de classe PHP dans app/View/Components/NomDuComposant.php
  • Un fichier de vue Blade dans resources/views/components/nom-du-composant.blade.php

La classe PHP peut contenir des propriétés et des méthodes pour gérer les données du composant, tandis que le fichier Blade contient le code HTML.

Il est également possible de créer des composants anonymes en créant simplement un fichier Blade dans le répertoire resources/views/components. Cela évite la création de la classe PHP si elle n’est pas nécessaire.

php artisan make:component NomDuComposant --view

Paramètres des composants

Les composants Blade peuvent accepter des paramètres pour rendre le composant plus dynamique. Par exemple, si vous avez un composant de bouton, vous pouvez lui passer des paramètres pour définir le texte du bouton, la couleur, etc.

Ces paramètres peuvent être définis dans la vue Blade du composant en utilisant la directive @props :

@props(['type' => 'button', 'label' => 'Cliquez-moi'])
<button type="{{ $type }}">{{ $label }}</button>

Le composant acceptera deux paramètres : type et label, avec des valeurs par défaut.

Le composant accepte aussi un contenu dynamique via la variable spéciale $slot :

<div class="card">
    <div class="card-body">
        {{ $slot }}
    </div>
</div>

Dans certains cas, il peut être utile de définir des emplacements nommés pour le contenu dynamique. Cela peut être fait en utilisant la directive @isset :

<div class="card">
   @isset($header)
     <div class="card-header">
            {{ $header }}
      </div>
   @endisset
   <div class="card-body">
     {{ $slot }}
   </div>
   @isset($footer)
      <div class="card-footer">
        {{ $footer }}
      </div>
   @endisset
</div>

Utilisation des composants

Pour utiliser un composant Blade dans une vue, vous pouvez utiliser la syntaxe suivante :

<x-nom-du-composant type="submit" label="Envoyer" />

Si le composant accepte du contenu dynamique, vous pouvez l’inclure entre les balises d’ouverture et de fermeture :

<x-nom-du-composant>
    Contenu dynamique ici
</x-nom-du-composant>

Vous pouvez également passer du contenu aux emplacements nommés en utilisant la syntaxe suivante :

<x-nom-du-composant>
    <x-slot name="header">
        En-tête de la carte
    </x-slot>
    Contenu principal de la carte
    <x-slot name="footer">
        Pied de page de la carte
    </x-slot>
</x-nom-du-composant>

Pour plus d’informations sur les composants Blade, vous pouvez consulter la documentation officielle de Laravel : https://laravel.com/docs/master/blade#components