Laravel Nova 4
La nouvelle version de Laravel Nova, Silver Surfer (version 4), est sortie en avril 2022. Il n'y avait plus eu de mise à jour majeure depuis mars 2020 avec la sortie de Laravel Nova 3 (Orion) qui permettait la compatibilité avec Laravel 7.x.
Cette nouvelle version apporte de nombreuses nouvelles fonctionnalités et améliorations. Cela permet de réduire le nombre de packages externes installés pour pouvoir personnaliser l'interface. Elle poursuit les améliorations apportées avec Orion et implémente une nouvelle interface réactive basée sur Tailwind 2, Vue 3 et Inertia.js.
Auparavant, il fallait installer un package pour rendre l'interface réactive mais ce dernier n'était pas parfait.
De plus, cette version prend en charge le mode sombre nativement 😍 Il n'y a donc plus besoin de passer par un package externe.
La recherche permet maintenant de pouvoir rechercher dans les relations et les colonnes JSON d'une ressource. Au niveau des performances, il y a une nette amélioration du chargement des ressources avec beaucoup de relations. Vu que celles-ci ne sont plus chargées par défaut, elles sont enregistrées dans le local storage
du navigateur.
Les nouveautés marquantes de Laravel Nova 4
Parmi les nouvelles fonctionnalités intéressantes qui ne nécessitent plus de l'installation de packages tiers, nous pouvons trouver :
- L'impersonate
Fonctionnalité assez cool qui permet facilement d'usurper l'identité d'un utilisateur pour résoudre les problèmes que celui-ci rencontre. Pour ce faire, rien de plus simple, ajouter le trait Laravel\Nova\Auth\Impersonatable
dans le model User
et c'est parti.
L'action sera disponible dans le menu d'actions de la ressource.
- Menu personnalisé
Dans les anciennes versions de Nova, pour pouvoir personnaliser le menu de la barre latérale gauche, il y avait deux possibilités. Il fallait soit overrider le fichier de navigation de Nova, soit installer le package digital-creative/collapsible-resource-manager qui permettait de vraiment personnaliser son menu avec des groupes de menu repliables. Maintenant, plus besoin d'un package, c'est dans le coeur de Nova. Cela permet de pouvoir personnaliser tous les menus de l'interface.
- Duplication de ressource
Directement disponible dans le menu d'action de la ressource, elle permet d'ouvrir le formulaire de création avec toutes les données de la ressource que l'on veut répliquer qui sont prêtes à être modifiées au besoin.
- Champs dépendants
Plus besoin de passer par un package tiers pour pouvoir afficher ou non d'autres champs en fonction des valeurs d'un autre. Il suffit de mettre la méthode dependsOn
sur le champ qui doit dépendre d'un autre.
- La personnalisation de l'interface
Plus besoin de créer un thème personnalisé pour pouvoir changer les couleurs primaires de l'interface. On peut même facilement changer le logo utilisé. Tout cela directement dans le fichier de configuration de nova : config/nova.php.
- Export de données en CSV
Il est désormais possible d'exporter au format CSV les données d'une ressource facilement. Il suffit d'ajouter l'action Laravel\Nova\Actions\ExportAsCsv
dans la ressource Nova.
Je vous invite à aller parcourir la documentation de Laravel Nova 4 pour voir l'ensemble des nouvelles améliorations et fonctionnalités.
La mise à jour vers Laravel Nova 4 peut être longue si vous avez créé un certain nombre de champs, outils, ou encore de cards personnalisés. Avec le changement des dépendances front, il est nécessaire de mettre à niveau ceux utilisés dans les anciens éléments personnalisés.
Dans les changements que l'on peut observer, il y a :
- L'utilisation de Vue 3 qui nécessite donc l'adaptation du code existant
- Le remplacement du routeur de Vue par celui de Inertia.js
- La définition d'une route côté serveur pour que l'élément personnalisé puisse être rendu (pas obligatoire si on entre directement le lien dans le menu et que l'on ne veut pas que ce soit automatique)
- La suppression de la dépendance
laravel-nova
car chaque mixin est maintenant intégrée à Nova lui-même.
Pour conclure
Cette nouvelle version est vraiment intéressante, j'ai hâte de terminer la mise à jour de notre CMS^ID qui est actuellement sur la version 3. C'est bien mieux de ne plus devoir installer plusieurs packages et devoir dépendre d'eux pour faire des choses simples comme personnaliser son menu avec des groupements repliables, pouvoir facilement impersonate un utilisateur, ...
Je ne peux que recommander Laravel Nova qui permet facilement d'avoir un panneau d'administration avec Laravel.