FilamentPHP V3 - analyse des fonctionnalitées et réflexion
J'expore FilamentPHP v3 depuis le jour de sa sortie, je fais le point ici avec le mode hasTenant et les mutli panels
J'ai lancé un projet pour un client 3 semaines avant la sortie de filamentPHP v3, j'ai longtemps hesité et j'ai décidé d'attendre la sortie en me concentrant sur le modèle de données, en créant des jolies factory et des tests unitaire avec pest 2. Au final, je suis assez content d'avoir bien pris le temps de valider tout le modèle de données avant de créer la première vue. ( c'est ce qu'il faudrait faire ça chaque fois - évidemement Joe )
Je jettes ici mes premières impressions et cas d'utilisations.
Avant tout le mode mutli Panel est assez incroyable. En effet vous pouvez créer un panel pour vos utilisateurs et un panel pour l'admin.
C'est assez efficient grace au mode Tenant.
FilamentPHP va quasiment auto-gérer pour vous l'appartenance des models. Si vos utilisateurs créent des Posts par exemple il vous faudra implémenter HasTenant ( très bien expliqué dans la doc ) et dans votre panel admin, vous n'utilisez pas ->tenant() sur la déclaration du panel d'admin ( et inversement ) et le tour est joué.
Les policies et Filament
Je rappel que depuis la v2 de filament les Policies de laravel sont auto gérées, si vous créez un PostPolicy avec delete qui retourne false, personne ne pourra supprimer de post dans le panel filament. Accolé à l'excellent spatie/laravel-permission vous obtenez un combo d'une simplicité incroyable.
La chasse aux repertoires "filament" et "livewire"
Une fois livewire installé vous avez dans votre arborescence le répertoire des resources FilamentPHP :
/app/Filament
Si vous personnalisé le logo de filament vous créez un ficher logo.blade.php la
/resources/views/vendor/filament/components/logo.blade.php
Si vous créez des panels multiple vous vous retrouver avec les définitions des panels dans :
/app/Providers/Filament/AdminPanelProvider.php
Si vous créez des customs components ( ex places-switcher ) vous aurez les fichers blade rangé dans :
/resources/views/livewire/places-switcher.blade.php
et leur classe attenante :
app/Http/Livewire/PlacesSwitcher.php
Si vous créez une vue custom ( exemple ViewPatient) vous vous retrouver avec un template blade rangé la :
/resources/views/livewire/view-patient.blade.php'%
et sa classe attenante :
app/Livewire/ViewPatient.php
ça peux être legerement perturbant