Wiederholbares Formular Feldtyp
From Joomla! Documentation
Bitte nutze stattdessen Teilformular Formularfeldtyp.
Bietet ein Modal mit Reihen von Formular-Feldern, die Du bestimmst. Es können so viele Optionen hinzugefügt werden wie Du möchtest. Hinweis: dieses Formular-Feld hat eine jQuery-basierte Javascript-Datei als Abhängigkeit.
- name (notwenig) ist der eindeutige Name des Parameters.
- type (notwendig) muss repeatable sein.
- label (notwendig) (übersetzbar) ist der beschreibende Titel des Feldes.
- description Beschreibungstext für das Formular-Feld. Wird am oberen Rand im Modal mit dem Namen aber auch an der üblichen Position im Formular angezeigt.
- default der Standardwert für das Formularfeld, falls das Feld leer gelassen wird. Beachte das dies ein JSON-kompatibler String ist, mit den Inhalten des Formularfeldes.
- id die ID des versteckten Formularfeldes. (das Modal wird diese ID mit einem zusätzlichen Suffix "_modal" tragen und die Tabelle innerhalb des Modal wird diese ID mit einem zusätzlichen Suffix "_modal_table" tragen).
- class Klasse der Tabelle.
- select (übersetzbar) Der Text der auf dem Modal-Button angezeigt wird.
- icon das angezeigte Symbol auf dem Auswahl-Button (vorangestellt mit "icon-").
- maximum die maximale Anzahl der Zeilen an erlaubten Feldern (standardmäßig 999, ist effektiv aber unendlich).
Um ein Formularfeld zu erstellen, musst Du zunächst ein wiederholbares Formularfeld erstellen.
<fields>
In dieser legst Du den open und close-Tag (wenn nicht bereits in einem enthalten - falls ein Fields-Tag für params etc. vorhanden ist, ist dies nicht erforderlich.) und innerhalb dieses einen Tag.
<fieldset>
Das fieldset-Tag MUSS einen gleichen Namen wie das wiederholbare Feld mit "_modal" am Ende haben - es sollte auch das im fieldset Tag haben.
repeat="true"
Innerhalb dieses fieldset bindest Du dann die Formular-Felder ein, die Du wiederholt haben möchtest (wie bei jedem Formular-Feld).
Beispiel XML-Definition
<field name="list_templates"
type="repeatable"
icon="list"
description="PLG_TINY_FIELD_TEMPLATE_FIELD_ELEMENTS_DESC"
label="PLG_TINY_FIELD_TEMPLATE_FIELD_ELEMENTS_LABEL"
default='{"template":["Layout","Simple snippet"],
"location":["layout1.html","snippet1.html"],
"description":["HTMLLayout","Simple HTML snippet"]}'>
<fieldset hidden="true" name="list_templates_modal" repeat="true">
<field name="template"
label="PLG_TINY_FIELD_TEMPLATE_FIELD_NAME_LABEL"
size="30"
type="text" />
<field name="location"
label="PLG_TINY_FIELD_TEMPLATE_FIELD_LOCATION_LABEL"
description="PLG_TINY_FIELD_TEMPLATE_LOCATION_DESC"
size="30"
type="filelist"
directory="media/editors/tinymce/templates"
exclude="index.html"
hide_default="true"
hide_none="true" />
<field name="description"
label="PLG_TINY_FIELD_TEMPLATE_FIELD_DESCRIPTION_LABEL"
size="30"
type="textarea" />
</fieldset>
</field>
Betrachtungen zum Default-Wert
- Der Default darf Leerzeichen, Tabulatoren und neue Zeilen[1] enthalten (bessere Lesbarkeit).
- Die Datei-Elemente im String müssen mit " statt ' umschlossen sein. Fehlerhafte Anwendung führt zum Fehler beim json-Dekodieren der Default-Werte.
Wiederherstellung Deiner Daten
Die Einstellungen eines wiederholbaren Formular-Feldtypes werden als json codiertes Array wiedergegeben (wie der Default).
// get the repeatable field value and decode it
$list_hosts = json_decode( $params->get('list_templates'),true);
// loop your result
foreach( $list_templates as $list_templates_idx => $list_template ) {
// do something clever for each of the templates
}