MForm Development Skill
Du arbeitest im REDAXO-Addon MForm.
MForm ist ein API-getriebenes Formular-Addon mit vielen produktiv genutzten Einstiegspunkten. Arbeite kompatibel, lokal und dokumentationsbewusst.
Kernziele
- Öffentliche MForm-APIs stabil halten
- Bestehende Modul-Inputs und gespeicherte Werte nicht brechen
- Repeater-, Widget- und Editor-Kompatibilität sichern
- YForm- und rex_form-Integrationen mitdenken
- Änderungen immer mit Qualitätscheck und Doku-Pflege abschließen
Wo du was findest
Einstieg und Struktur
package.yml– Version, Anforderungen, Backend-Seitenboot.php– Asset-Registrierung und YForm-Integrationinstall.php/update.php– Install-/Update-Verhalten
Öffentliche Doku
README.md– öffentliche englische DokuREADME.de.md– öffentliche deutsche DokuCHANGELOG.md– Release-Historiedocs/00_whats_new.md– Übersicht neuer Featuresdocs/05_wrapper.md– Wrapper wie Modal, Collapse, Tabsdocs/07_repeater.md– Flex-Repeater, Ausgabe, Vergleich, Optionendocs/08_mblock_migration.md– Migration und Kompatibilität mit MBlockdocs/10_outside_modules.md– Nutzung z. B. mit rex_form/YForm
PHP-Kerncode
lib/MForm.php– Hauptklasse und API-Einstieglib/MForm/Elements*bzw. Klassen unterlib/MForm/– Felddefinitionen und Bausteinelib/MForm/Parser/– Parser- und Renderlogiklib/MForm/FlexRepeater/– Flex-Repeater-Renderer und Builderlib/Widget/– Widget-nahe Logiklib/yform/– YForm-Value-Types und Integrationfragments/– HTML-Struktur der Ausgabeytemplates/– YForm-Templates für bootstrap/classic
Assets
assets/mform.js– allgemeines MForm-JSassets/js/flex-repeater.js– Kernlogik des Flex-Repeatersassets/js/customlink.js– Custom-Link-Widgetassets/js/list-widget.js,imglist.js– Widget-Logikassets/css/– Styles für Widgets und Repeater
Kritische Bereiche
Öffentliche API
Änderungen an diesen APIs nur sehr vorsichtig:
addRepeaterElement()addModalElement()addCustomLinkField()addCustomLinkMultipleField()addConditionalFieldsetArea()addColorSwatchField()MFormRepeaterHelper::*MFormOutputHelper::*
Kompatibilität
Besonders sensibel sind:
- Repeater-Speicherformat und Hidden-Value-Synchronisierung
__disabled-Handling für Online/Offline im Repeater- Nested Repeater
- Modal-IDs innerhalb von Repeatern
- TinyMCE-, MarkdownEditor- und klassische Widget-Kompatibilität
- MBlock-Migration und
useCustomLinkForClassicWidgets(true) - YForm-Value-Types und Listenansicht im Manager
- Nutzung außerhalb klassischer Module, z. B. rex_form oder YForm
Arbeitsweise
- Finde den kleinsten Codepfad, der das Verhalten kontrolliert.
- Ändere nur diesen Bereich.
- Prüfe sofort danach den engsten sinnvollen Check.
- Aktualisiere anschließend Doku, README und Changelog, wenn Nutzerverhalten betroffen ist.
Qualitätschecks
PHP / REDAXO
Nach relevanten Änderungen immer statische Analyse ausführen:
(Pfede können je nach Setup variieren)
docker exec -it coreweb bash -c "cd /var/www/html/public && php redaxo/bin/console rexstan:analyze redaxo/src/addons/mform/"
Manuelle/verhaltensnahe Checks
Wenn betroffen, mindestens gedanklich oder praktisch prüfen:
- Repeater add/remove/sort/copy/paste
- Nested Repeater
- Modal im Repeater
- Widget-Popup und Wertübernahme
- YForm-/rex_form-Integration
- Ausgabehilfen wie
decode(),filterByField(),sortByField()
Doku-Pflege
Bei geänderten Features, APIs, Kompatibilitätsregeln oder Nutzungshinweisen immer diese Dateien prüfen und aktualisieren:
CHANGELOG.mdREADME.mdREADME.de.md- passende Dateien unter
docs/
Zuordnung
- Neue Nutzerfeatures:
docs/00_whats_new.md - Wrapper/Modal/Collapse:
docs/05_wrapper.md - Repeater:
docs/07_repeater.md - MBlock-Kompatibilität/Migration:
docs/08_mblock_migration.md - Nutzung außerhalb von Modulen:
docs/10_outside_modules.md
README-Regel
Halte die deutsche und englische README inhaltlich synchron, soweit es um Features, Credits, Einordnung und Nutzung geht.
Entscheidungsregel bei Unsicherheit
Wenn eine Änderung zwischen Modernisierung und Kompatibilität abwägen muss, entscheide standardmäßig für Kompatibilität.
Source: FriendsOfREDAXO/mform — distributed by TomeVault.