Filament est un package Laravel qui permet de créer des interfaces d’administration élégantes et fonctionnelles pour vos applications de manière rapide et intuitive.
Pourquoi utiliser Filament ?
- Rapidité de développement : Filament fournit un ensemble de composants prêts à l’emploi qui vous permettent de créer des formulaires, des tables, des filtres et bien plus encore en quelques lignes de code.
- Esthétique moderne : Basé sur Tailwind CSS, Filament offre une apparence moderne et personnalisable pour s’intégrer parfaitement à votre application.
- Fonctionnalités riches : Filament intègre de nombreuses fonctionnalités avancées telles que la recherche, le tri, la pagination, les relations, les autorisations et bien d’autres.
- Communauté active : Filament bénéficie d’une communauté active et grandissante, ce qui signifie que vous trouverez de nombreux tutoriels, ressources et une aide précieuse en ligne.
Les principaux avantages de Filament - Réduction du temps de développement : En éliminant la nécessité de coder de nombreuses fonctionnalités de base, Filament vous permet de vous concentrer sur la logique métier de votre application.
- Amélioration de l’expérience utilisateur : Les interfaces créées avec Filament sont intuitives et faciles à utiliser, ce qui améliore l’expérience des utilisateurs de votre administration.
- Flexibilité : Filament est hautement personnalisable, vous permettant d’adapter l’interface à vos besoins spécifiques.
Installation
Prérequis
Filament nécessite les éléments suivants pour fonctionner :
- PHP 8.1 et +
- Laravel v10.0 et +
- Livewire v3.0 et +
Par défaut, l’URL du tableau de bord Filament est /admin. Vous pouvez la personnaliser dans le fichier filament.php.
Installation
Installez le Filament Panel Builder en exécutant les commandes suivantes dans le répertoire de votre projet Laravel :
composer require filament/filament:"^3.2" -W php artisan filament:install --panels
Cela créera et enregistrera un nouveau fournisseur de services Laravel appelé
app/Providers/Filament/AdminPanelProvider.php
Si vous rencontrez une erreur lors de l’accès à votre panneau, vérifiez que le fournisseur de services est enregistré dans
bootstrap/providers.php
(Laravel 11 et versions ultérieures) ou
config/app.php
(Laravel 10 et versions antérieures). Sinon, vous devez l’ajouter manuellement.
Créer un utilisateur
Vous pouvez créer un nouveau compte utilisateur avec la commande suivante :
php artisan make:filament-user
Ouvrez
/admin
dans votre navigateur Web, connectez-vous et commencez à construire votre application !
Utilisation d’autres packages Filament
Le Filament Panel Builder installe par défaut les packages suivants : Form Builder, Table Builder, Notifications, Actions, Infolists, et Widgets. Aucune étape d’installation supplémentaire n’est nécessaire pour utiliser ces packages dans un panneau.
Amélioration des performances des panneaux Filament
Optimisation de Filament pour la production
Pour optimiser Filament pour la production, vous devez exécuter la commande suivante dans votre script de déploiement :
php artisan filament:optimize
Cette commande mettra en cache les composants Filament ainsi que les icônes Blade, ce qui peut améliorer significativement les performances de vos panneaux Filament. Cette commande est un raccourci pour les commandes
php artisan filament:cache-components
et
php artisan icons:cache
Pour vider tous les caches à la fois, vous pouvez exécuter :
php artisan filament:optimize-clear
Mise en cache des composants Filament
Si vous n’utilisez pas la commande
filament:optimize
vous pouvez envisager d’exécuter
php artisan filament:cache-components
dans votre script de déploiement, surtout si vous avez un grand nombre de composants (ressources, pages, widgets, gestionnaires de relations, composants Livewire personnalisés, etc.). Cela créera des fichiers de cache dans le répertoire
bootstrap/cache/filament
de votre application, ce qui peut améliorer significativement les performances de Filament dans certaines applications en réduisant le nombre de fichiers à scanner et à auto-découvrir.
Cependant, si vous développez activement votre application en local, vous devez éviter d’utiliser cette commande, car elle empêchera la découverte de nouveaux composants jusqu’à ce que le cache soit vidé ou reconstruit.
Pour vider le cache à tout moment sans le reconstruire, exécutez :
php artisan filament:clear-cached-components
Mise en cache des icônes Blade
Si vous n’utilisez pas la commande
filament:optimize
, vous pouvez envisager d’exécuter
php artisan icons:cache
localement, ainsi que dans votre script de déploiement. En effet, Filament utilise le package Blade Icons, qui peut être beaucoup plus performant lorsqu’il est mis en cache.
Activation d’OPcache sur votre serveur
D’après la documentation Laravel Forge : – L’optimisation de l’OPcache PHP pour la production configure OPcache pour stocker votre code PHP compilé en mémoire, ce qui améliore considérablement les performances.
Veuillez utiliser un moteur de recherche pour trouver les instructions d’installation OPcache pertinentes pour votre environnement.
Optimisation de votre application Laravel
Vous devriez également envisager d’optimiser votre application Laravel pour la production en exécutant
php artisan optimize
dans votre script de déploiement. Cela mettra en cache les fichiers de configuration et les routes.
Déploiement en production
Autoriser les utilisateurs à accéder à un panneau
Par défaut, tous les modèles User peuvent accéder à Filament en local. Cependant, lors du déploiement en production, vous devez mettre à jour votre fichier
App\Models\User.php
pour implémenter le contrat
FilamentUser
afin de garantir que seuls les utilisateurs autorisés peuvent accéder à votre panneau :
<?php namespace App\Models; use Filament\Models\Contracts\FilamentUser; use Filament\Panel; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable implements FilamentUser { // ... public function canAccessPanel(Panel $panel): bool { return str_ends_with($this->email, '@yourdomain.com') && $this->hasVerifiedEmail(); } }
Si vous ne complétez pas ces étapes, une erreur 403 Forbidden sera renvoyée lorsque vous accéderez à l’application en production.
Utiliser un disque de stockage prêt pour la production
Filament dispose d’un disque de stockage défini dans la configuration, qui est par défaut défini sur
public
Vous pouvez définir la variable d’environnement
FILAMENT_FILESYSTEM_DISK
pour le modifier.
public
bien qu’idéal pour le développement local, n’est pas adapté à la production. Il ne prend pas en charge la visibilité des fichiers, donc les fonctionnalités de Filament telles que les téléchargements de fichiers créeront des fichiers publics. En production, vous devez utiliser un disque prêt pour la production comme
s3
avec une politique d’accès privé, afin de prévenir tout accès non autorisé aux fichiers téléchargés.
Publication de la configuration
Vous pouvez publier la configuration du package Filament (si nécessaire) en utilisant la commande suivante :
php artisan vendor:publish --tag=filament-config
Publication des traductions
Vous pouvez publier les fichiers de langue pour les traductions (si nécessaire) avec la commande suivante :
php artisan vendor:publish --tag=filament-panels-translations
Étant donné que ce package dépend d’autres packages Filament, vous pouvez publier les fichiers de langue pour ces packages avec les commandes suivantes :
php artisan vendor:publish --tag=filament-actions-translations php artisan vendor:publish --tag=filament-forms-translations php artisan vendor:publish --tag=filament-infolists-translations php artisan vendor:publish --tag=filament-notifications-translations php artisan vendor:publish --tag=filament-tables-translations php artisan vendor:publish --tag=filament-translations
Mise à niveau
Filament se met automatiquement à jour vers la dernière version compatible lorsqu’une mise à jour de Composer est effectuée. Après toute mise à jour, tous les caches Laravel doivent être vidés et les ressources frontend doivent être republiées. Vous pouvez tout faire en une seule fois en utilisant la commande
filament:upgrade
qui devrait avoir été ajoutée à votre fichier
composer.json
lors de la première exécution de
filament:install
"post-autoload-dump": [ // ... "@php artisan filament:upgrade" ],
filament:upgrade
ne gère pas réellement le processus de mise à jour, car Composer s’en charge déjà. Si vous effectuez une mise à jour manuelle sans hook
post-autoload-dump
vous pouvez exécuter la commande vous-même :
composer update php artisan filament:upgrade