Yayaw
Documentation

Formulaires dans les pages

Afficher la vue Formulaire d’une table dans une page CMS et enregistrer les réponses.

Présentation

Une section formulaire affiche une des tables de votre organisation sous forme de formulaire dans une page CMS. Chaque réponse d’un visiteur crée une ligne dans cette table. Le formulaire est la vue Formulaire enregistrée de la table : ses questions, sections, règles, textes, mise en page et valeurs fixes. La section choisit seulement la vue à afficher et peut remplacer deux réglages.

Les formulaires dans les pages utilisent le même système que les liens de formulaire publics (/f/<token>) : le même instantané construit sur le serveur, les mêmes contrôles de chaque réponse, la même protection contre le spam et le même journal d’audit. Seul l’endroit où vit le formulaire change.

Les sections formulaire demandent le feature flag public-forms (désactivé par défaut). Tant qu’il est désactivé, le catalogue de sections ne propose aucun formulaire, l’éditeur de pages masque les sections formulaire, les pages publiées n’affichent rien à la place du formulaire et toute réponse est refusée.

Documentation liée :

Créer une section formulaire

  1. Dans la table, passez en Formulaire, préparez les questions et enregistrez la vue. Partagez la vue avec l’organisation : une page appartient à l’organisation, les vues privées ne peuvent donc pas servir.

  2. Ouvrez Contenu › Sections et choisissez Nouveau formulaire.

  3. Choisissez la table et une de ses vues Formulaire partagées. Seules les tables que vous pouvez lire apparaissent.

  4. Choisissez si besoin une mise en page (toutes les questions sur une page, ou une question à la fois) et un message après l’envoi, en anglais et en français.

  5. Créez la section. Elle rejoint le catalogue de votre organisation avec un aperçu du formulaire.

La section enregistre seulement la vue à afficher et les deux réglages :

{
  "kind": "form",
  "id": "contact-form",
  "name": "Formulaire de contact",
  "version": 1,
  "form": {
    "source": { "kind": "view", "modelSlug": "contacts", "viewId": "<id de la vue>" },
    "layout": "steps",
    "successMessage": { "en": "Thank you!", "fr": "Merci !" }
  }
}

source.kind: "form" est réservé aux formulaires autonomes qui écriront dans plusieurs tables à la fois. Il est accepté dans les sections enregistrées mais refusé par la validation tant qu’il n’est pas disponible.

La placer dans une page

Dans l’éditeur de pages, insérez la section formulaire depuis la liste des sections, comme toute section réutilisable. Le canevas et les aperçus de brouillon affichent le formulaire ; vous pouvez le remplir pour essayer les questions et les règles, mais un aperçu n’envoie jamais de réponse : il vérifie les réponses dans le navigateur et affiche un message.

Seules les pages d’organisation peuvent afficher un formulaire. Les pages et sections globales ne peuvent pas en contenir.

Publier

C’est la publication de la page qui ouvre le formulaire :

  • Le membre qui publie doit avoir les droits de publication de la page et dynamic-data:manage sur la table du formulaire. Sinon la publication est refusée, de même pendant une usurpation d’identité.

  • À la publication, le serveur lit la vue enregistrée et les champs déployés de la table, puis construit l’instantané du formulaire. Rien de ce qu’envoient le navigateur ou un assistant n’est utilisé. L’instantané est écrit dans la même transaction que la publication.

  • Le membre qui publie devient le propriétaire des réponses : les lignes sont créées avec ses droits, vérifiés à chaque réponse. S’il perd l’accès à la table, le formulaire répond « indisponible » jusqu’à ce qu’un membre autorisé publie de nouveau la page.

  • Les changements de la vue Formulaire arrivent sur la page à la publication suivante.

Dépublier ou archiver la page, ou la publier sans le formulaire, arrête le formulaire immédiatement : une réponse n’est acceptée que tant que la page est publiée à la révision qui a ouvert le formulaire.

Réponses

Les réponses passent par l’action serveur de la page : les formulaires fonctionnent donc aussi sur les domaines personnalisés, où /api est privé. Chaque réponse est contrôlée comme celle d’un lien de formulaire public : honeypot, limites par formulaire et par visiteur, taille maximale, règles du formulaire (les questions masquées sont ignorées), types et options, puis la validation de la table et les limites du forfait. Le journal d’audit enregistre public-form.response avec les identifiants de la page et de la section, jamais les réponses.

Le formulaire parle la langue de la page : quand la vue Formulaire a ses textes en plusieurs langues, une page en français affiche les textes français, sinon ceux de la langue par défaut du formulaire. Une case de consentement doit être cochée pour envoyer, et le serveur enregistre chaque consentement accepté (sa version, la déclaration telle qu’affichée, sa langue et l’heure) avec l’enregistrement, jamais dans une colonne. Les champs cachés (un paramètre de campagne de l’adresse de la page, la page, le référent, la langue, un texte fixe) sont vérifiés à nouveau par le serveur et conservés avec l’enregistrement ou écrits dans le champ qu’ils désignent ; ils n’accordent jamais aucun droit.

Assistants (MCP)

Un assistant peut créer et placer une section formulaire dans des brouillons avec les outils de sections habituels (yayaw_sections_create_draft, yayaw_sections_save_draft, yayaw_sections_validate) et la référencer depuis une page. Le schéma de la section refuse tout sauf la source et les deux réglages. L’assistant doit pouvoir lire la table. yayaw_table_views_list liste les vues Formulaire de la table partagées avec l’organisation, chacune avec la formSectionSource à utiliser comme source de la section, et yayaw_table_view_save prépare ou met à jour une telle vue (questions, conditions, étapes, langues, consentements, champs cachés, valeurs fixes) comme un brouillon que l’équipe voit ; son formPreview liste les consentements, les champs cachés et les langues. Les vues personnelles restent hors de portée.

La publication reste une étape humaine : yayaw_pages_publish refuse une page qui affiche un formulaire, car la publication fait accepter les réponses au nom de la personne qui publie. yayaw_cms_design_vocabulary_get décrit la section sous formSection.