Installation
Installer @lrvo/module-forms, créer les tables, vérifier les dépendances de courriel et de stockage, afficher un premier formulaire.
Cette page couvre l'installation de @lrvo/module-forms dans un projet déjà structuré par @lrvo/start. Le module n'est jamais déclaré à la main : il est découvert au boot par scan des dépendances, comme décrit dans Cycle de vie d'un module.
Prérequis
- Un projet généré par
npx @lrvo/start, avec@lrvo/coreinstallé. NEXT_PUBLIC_URLrenseignée. Ce n'est pas une recommandation : sans elle, toute soumission est rejetée. Voir plus bas.
Installer
npm i @lrvo/module-formsAjouter la variable d'activation au .env :
#------ MODULE - FORMS ------#
LRVO_MODULE_FORMS=trueSans ce drapeau, le module est ignoré : aucune table, aucune route, aucune entrée d'admin.
Régénérer les manifestes puis créer les tables :
npx lrvo-modules sync # déclenché automatiquement au postinstall
npx lrvo-db init # crée lrvo_forms_form et lrvo_forms_submissionVersion de core exigée
Le module réclame @lrvo/core 1.0.70 ou plus, et le boot refuse une combinaison plus ancienne en nommant le module. C'est ce core qui sait générer app/.lrvo/public-pages.server.js, le manifeste par lequel la page publique /lrvo/forms/<slug> s'enregistre.
Sur un projet créé avant cette version, app/lrvo/[...path]/page.js doit gagner l'import du manifeste :
npx lrvo-doctor --fix
npx lrvo-modules synclrvo-db init saute les tables déjà présentes. Le module n'a aucune migration de schéma : les tables sont créées telles quelles ou laissées intactes. Voir Modèle de données.
Vérifier l'origine publique
C'est l'étape que l'on oublie, et elle rend le module inutilisable si elle manque.
NEXT_PUBLIC_URL=https://exemple.com
NEXT_PUBLIC_URL_DEV=http://localhost:3000Le routeur du core protège toute requête modifiante par une comparaison d'origine. L'en-tête Origin de la requête doit correspondre à l'origine déclarée dans ces variables. Si aucune n'est renseignée, la comparaison échoue systématiquement et la soumission remonte en 403.
Le symptôme est trompeur : le formulaire s'affiche, se remplit, et l'envoi échoue sans message explicite côté visiteur.
Voir Soumissions pour le détail de cette protection.
Activer les courriels
Les notifications à l'équipe et les accusés de réception passent par le service de courriel du core, donc par le fournisseur configuré pour le projet.
LRVO_EMAIL_RESEND_APIKEY=re_...
LRVO_EMAIL_FROM_ADDRESS=[email protected]
LRVO_EMAIL_FROM_NAME=ExempleSans ces variables, le module fonctionne : les soumissions sont enregistrées et consultables dans l'admin, seuls les courriels ne partent pas. Leur échec n'a jamais d'effet sur la soumission.
Voir core/email.
Activer les champs fichier
Un formulaire qui accepte des pièces jointes a besoin du stockage objet du core, configuré par les variables LRVO_STORAGE_*. Voir core/storage.
Sans ces variables, un formulaire sans champ fichier fonctionne normalement.
Afficher un premier formulaire
Créer un formulaire depuis /admin/forms, lui donner un slug, puis l'ouvrir directement à son URL de page publique :
/lrvo/forms/<slug>Cette page est enregistrée par le module au boot, il n'y a rien à câbler. Elle sert avant tout à vérifier l'installation : pour un vrai site, préférer le bloc du BlockEditor ou le composant FormEmbed. Voir Affichage.
Vérifier
- La connexion à la base répond :
npx lrvo-db test Formulairesapparaît dans la barre latérale de l'admin, avec les itemsFormulairesetSoumissions.- Créer un formulaire, l'ouvrir à
/lrvo/forms/<slug>, l'envoyer, puis retrouver la soumission dans/admin/forms/submissions.
Si l'envoi échoue, vérifier d'abord NEXT_PUBLIC_URL, puis attendre trois secondes avant de valider : un envoi trop rapide est refusé par la protection anti-robot. Voir Soumissions.
Les permissions du module sont enregistrées et attribuées au rôle admin pendant lrvo-db init. Un module ajouté après coup n'a donc besoin que d'un npx lrvo-db init pour que forms.view et forms.manage apparaissent dans /admin/roles.
Mettre à jour
npx lrvo-updateLe module déclare la version minimale de @lrvo/core dont il a besoin. Un npm i @lrvo/module-forms@latest sur un projet dont le core est trop ancien produit un ERESOLVE au message peu parlant : lrvo-update résout au contraire le core et les modules ensemble, et laisse en place tout module qu'il ne peut pas monter.
Les notes de version sont livrées avec le package, dans node_modules/@lrvo/module-forms/CHANGELOG.md.
Notes
- Le module dépend de
@lrvo/coreenpeerDependencyet n'a aucune dépendance de runtime. L'envoi de courriel et le client de stockage viennent du core. - Désinstaller le module ne supprime pas les tables.
dropTablesest exporté depuis@lrvo/module-formspour le faire explicitement. - Un nouveau formulaire est créé actif. Le passer inactif le retire de la page publique et fait échouer les soumissions, sans toucher aux réponses déjà reçues.