Das Profile-Modul von Zikula bietet seit langer Zeit die Möglichkeit, die einzelnen Angaben der Benutzerprofile flexibel zu verändern und nach Belieben zu konfigurieren. Diese Funktionalität wurde im Laufe der letzten Jahre mehrfach umgebaut und basiert mittlerweile auf Symfony Forms. Diese Implementierung ist relativ smart gelöst: man wählt zunächst einen Feldtyp aus und anschließend werden via Ajax automatisch weitere Felder zur Spezifikation der dazugehörigen, möglichen Feldoptionen geladen.
Etwas abstrahiert betrachtet lassen sich hiermit also Meta-Formulare zur Definition von Formularen definieren. Nun ist dies ja nicht nur für Benutzerprofile, sondern für zahlreiche weitere Anwendungen interessant: beispielsweise könnte man Kontaktformulare dynamisch zusammenbauen; das selbe gilt für jegliche Art von Umfragen. Oder man möchte einfach zu einem beliebigen Datenobjekt dynamisch weitere Angaben dokumentieren - damit könnte solch eine Funktion perspektivisch auch für die generischen Attribute, welche sich für diverse Entitäten nutzen lassen, nützlich sein.
Aus diesem Grund haben wir die Funktionalität aus Profile herausgeholt, generalisiert und in den Zikula Core, genauer in das FormExtensionsBundle
, eingepflegt. Damit steht sie nun für weitere Module zur Verfügung. Konkret werden die folgenden Helferlein angeboten:
- Ein Formulartyp zur Auswahl von Feldtyp und dazugehörigen Feldoptionen.
- Ein Event, mit dem die Liste der Feldtypen dynamisch verändert werden kann. Zum Beispiel gibt es im Benutzerprofil einen speziellen Avatar-Typ, welcher vom Profile-Modul hinzugefügt wird.
- Ein Interface für einen Container mit dynamischen Feldern.
- Ein Interface für einzelne dynamische Felder.
- Ein Formulartyp zum Einbinden der dynamischen Felder eines gegebenen Containers in ein Formular.
Weitere Details zur Implementierung lassen sich in der Dokumentation des Features nachlesen.