Wiederholbares Formular Feldtyp

From Joomla! Documentation

This page is a translated version of the page Repeatable form field type and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎فارسی • ‎français • ‎Nederlands
Dieses Feld ist veraltet

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
}

Referenzen

  1. https://tools.ietf.org/html/rfc7158