Skip to content

MelisFormCreator

Le constructeur de formulaires back-office de MelisPlatform — concevez des champs, des groupes, des règles, des statuts, des workflows de validation, des formules calculées et des versions. Package melisplatform/melis-form-creator.

Présentation

MelisFormCreator est l'outil d'administration permettant à un développeur ou à un gestionnaire de contenu de concevoir un formulaire : il fait glisser des champs dans des étapes, configure les types de champs, les groupes, les règles conditionnelles, les statuts de réponse, un workflow d'approbation multi-étapes (« Instruction ») et des formules calculées. Il écrit la définition résultante dans les tables de MelisFormEngine (melis_forms*) — le moteur est responsable du rendu du formulaire pour les visiteurs et du stockage des réponses. Ce module ne possède que deux petites tables de catalogue : les définitions de types de champs et les définitions de formules.

Activation

Ajouter dans config/melis.module.load.php :

php
return [
    // …
    'MelisFormCreator',
];

Dépendances requises (déclarées dans composer.json) :

  • melisplatform/melis-core ^5.3 — gestionnaire d'événements, gestionnaire de services, chrome des outils BO, traductions.
  • melisplatform/melis-form-engine ^5.3 — possède les tables de formulaires, champs et réponses ainsi que le moteur de rendu ; ce module écrit dedans.
  • melisplatform/melis-small-business ^5.3 — le moteur de workflow derrière le processus d'approbation Instruction.
  • mossadal/math-parser ^1.3 — évalue les expressions mathématiques des formules.
  • jms/serializer + doctrine/instantiator — (dé)sérialise le graphe d'entités de formule.

Services principaux

Alias de serviceRôle
FormCreatorFormulaServiceRésout le view helper enregistré d'une formule (depuis mff_helper_file) et affiche l'arbre de formule ; gère la conversion JSON ↔ XML et l'extraction des paramètres.
FormCreatorFieldTypeTablePasserelle vers la table de catalogue des types de champs mfft_*.
FormCreatorFormulaTablePasserelle vers la table de définitions de formules mff_*.

Back-office

Accessible via Marketing → Form Creator (clé de menu melisformcreator_tool, icône fa fa-th-large). Tous les contrôleurs sont accessibles via la route générique /MelisFormCreator/[:controller[/:action]].

Onglets du catalogue

OngletContrôleurRôle
FormFormCreatorFormControllerLister, créer, cloner (FormCreatorCloneFormController), ouvrir et supprimer des formulaires.
FieldsFormCreatorFieldControllerChamps réutilisables définis une seule fois et partagés entre tous les formulaires.
Field TypesFormCreatorFieldTypesControllerCatalogue système des types de champs (texte, liste déroulante, case à cocher, calcul…) — principalement en lecture.
GroupsFormCreatorGroupsControllerSections regroupant des champs dans un formulaire.
RulesFormCreatorRulesControllerLogique conditionnelle — afficher/masquer un champ en fonction de la valeur d'un autre champ, à l'aide de rule helpers (compare-number, compare-text).
StatusFormCreatorStatusControllerStatuts de réponse par lesquels une soumission peut passer (ex. : Nouveau, Validé, Rejeté).
InstructionFormCreatorInstruction*Controller (×4)Le workflow de validation : Process (étapes), Validators (approbateurs), Reasons (raisons de rejet/action), Comments (modèles de notes).
FormulasFormCreatorFormulasControllerExpressions calculées dérivées d'autres champs ; associées à un champ de type computation.

Onglets de la page d'édition de formulaire (par formulaire)

OngletRôle
FormConstructeur visuel — glisser des champs dans des étapes, les ordonner, définir les libellés et les traductions.
PropertiesParamètres au niveau du formulaire.
Status RulesRègles faisant passer une réponse d'un statut à un autre.
VersionsHistorique des versions (majeur.mineur.maintenance) — chaque modification structurelle ajoute automatiquement une version de maintenance.
InstructionAssocier un processus de validation au formulaire.
Entry ParametersPréremplir les réponses à partir des paramètres d'entrée.

Tables de base de données

Ce module ne possède que deux tables. Tous les formulaires, champs, groupes, règles, statuts, versions et réponses sont stockés par MelisFormEngine (tables melis_forms*).

Modèle de tablePKContenu
MelisFormCreatorFieldTypeTablemfft_idLe catalogue des types de champs (texte, liste déroulante, case à cocher, calcul…).
MelisFormCreatorFormulaTablemff_idDéfinitions de formulesmff_helper_file, mff_name, mff_description, mff_xml (arbre de formule sérialisé).

Événements et listeners

La structure d'un formulaire étant un XML dans le moteur, mais ses parties (champs, statuts, validateurs…) étant éditées séparément, Module.php attache des listeners qui resynchronisent chaque formulaire lorsqu'une partie partagée est modifiée.

ListenerÉvénement(s)Effet
MelisFormCreatorFormVersioningListenermelisformcreator_form_update_start / …_update_endPrend un instantané du XML du formulaire ; en cas de modification, écrit une nouvelle version de maintenance et incrémente mf_current_version_maintenance.
MelisFormCreatorUpdateFieldListenermelisformcreator_save_field_endRéécrit le XML du champ dans chaque formulaire qui l'utilise (y compris en tant que champ secondaire).
MelisFormCreatorDeleteFieldListenermelisformcreator_delete_field_endSupprime le champ du XML de chaque formulaire.
MelisFormCreatorUpdateValidatorListener / …DeleteValidatorListenermelisformcreator_save_validator_end / melisformcreator_delete_validator_endSynchronise ou supprime le validateur dans le XML des formulaires.
MelisFormCreatorUpdateProcessListener / …DeleteProcessListenermelisformcreator_save_process_end / melisformcreator_delete_process_endSynchronise ou supprime le processus dans le XML des formulaires.
MelisFormCreatorDeleteStatusListenermelisformcreator_delete_status_endRetire le statut du XML des formulaires.
MelisFormCreatorDeleteReasonListenermelisformcreator_delete_reason_endMet à jour le XML des réponses concernées via le service de réponses du moteur.
MelisFormCreatorFormulaUpdateFieldListenermelisformcreator_form_field_set_field_config_xml_end, melisformcreator_validate_form_field, melisformcreator_format_post_valuesInjecte <formula> + paramètres dans un champ de calcul, le valide, et convertit la formule JSON→XML à la sauvegarde.
MelisFormFormulaParametersListenermelisformcreator_formula_parametersRenseigne les valeurs des paramètres de formule à partir du contexte de réponse courant.
MelisFormCreatorFlashMessengerListener…_save_*_end / …_delete_*_endRetour visuel flash dans le back-office.

Étendre le constructeur

Écoutez les événements melisformcreator_save_*_end / melisformcreator_delete_*_end — vous recevez l'entité sauvegardée/supprimée après l'exécution de la logique principale, exactement comme le font les listeners de synchronisation intégrés.

View helpers

HelperUtilisation
FormulaHelperAffiche l'interface de l'arbre de formule ; convertit XML ↔ JSON ; extrait les paramètres.
FormulaTextLanguageHelperLibellés multilingues pour les nœuds de formule.
SecondaryFieldHelperSélectionne un champ « secondaire » (référençant). Réutilisé par MelisFormTool et MelisDocumentGenerator.
ToolTipTableConstruit des tables de tooltips configurables (groupes/validateurs/raisons). Réutilisé par MelisFormTool et MelisDocumentGenerator.
ValidatorBtnHelperBoutons d'action des validateurs dans l'interface Instruction.

Exemple

Écouter un événement post-sauvegarde pour exécuter une logique personnalisée après la mise à jour d'un champ :

php
// In your module's Module::onBootstrap()
$eventManager = $e->getApplication()->getEventManager();
$eventManager->attach(
    'melisformcreator_save_field_end',
    function ($event) {
        $savedField = $event->getParam('savedField');
        // your custom sync or notification logic here
    }
);

Fichiers clés

ÉlémentChemin
Bootstrap du module et listenersvendor/melisplatform/melis-form-creator/src/Module.php
Routage, services, contrôleurs, view helpersvendor/melisplatform/melis-form-creator/config/module.config.php
Entrée du menu gauchevendor/melisplatform/melis-form-creator/config/app.interface.php
Onglets du catalogue et d'édition de formulairevendor/melisplatform/melis-form-creator/config/app.tools.php
Rule helpers (compare-number / compare-text)vendor/melisplatform/melis-form-creator/config/rulehelper.config.php
Schémas de formulaires formule / type de champ / instructionvendor/melisplatform/melis-form-creator/config/app.formula.forms.php
Service de formulevendor/melisplatform/melis-form-creator/src/Service/MelisFormCreatorFormulaService.php
Graphe d'entités de formulevendor/melisplatform/melis-form-creator/src/Entity/
Listeners de synchronisation XML des formulairesvendor/melisplatform/melis-form-creator/src/Listener/
View helpersvendor/melisplatform/melis-form-creator/src/View/Helper/
Passerelles de tables (types de champs, formules)vendor/melisplatform/melis-form-creator/src/Model/Tables/

Voir aussi : MelisFormEngine, MelisSmallBusiness