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

FilamentPHP V3 - analyse des fonctionnalitées et réflexion

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