Difference between revisions of "Repeatable form field type/de"
From Joomla! Documentation
(Created page with "* '''name''' (Pflicht) ist der eindeutige Name des Parameters.") |
(Updating to match new version of source page) |
||
(44 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
<noinclude><languages /></noinclude> | <noinclude><languages /></noinclude> | ||
− | |||
− | + | {{tip|Bitte nutze stattdessen [[S:MyLanguage/Subform form field type|Teilformular Formularfeldtyp]].|title=Dieses Feld ist '''veraltet'''}} | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | 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. | ||
<source lang="php"> | <source lang="php"> | ||
<fields></source> | <fields></source> | ||
− | + | 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. | |
<source lang="php"> | <source lang="php"> | ||
<fieldset></source> | <fieldset></source> | ||
− | + | Das fieldset-Tag MUSS einen gleichen Namen wie das wiederholbare Feld mit "_modal" am Ende haben - es sollte auch das im fieldset Tag haben. | |
<source lang="php"> | <source lang="php"> | ||
repeat="true"</source> | repeat="true"</source> | ||
− | + | Innerhalb dieses fieldset bindest Du dann die Formular-Felder ein, die Du wiederholt haben möchtest (wie bei jedem Formular-Feld). | |
− | + | Beispiel XML-Definition | |
− | <source | + | <source lang="xml"> |
<field name="list_templates" | <field name="list_templates" | ||
− | type=" | + | type="repeatable" |
icon="list" | icon="list" | ||
description="PLG_TINY_FIELD_TEMPLATE_FIELD_ELEMENTS_DESC" | description="PLG_TINY_FIELD_TEMPLATE_FIELD_ELEMENTS_DESC" | ||
label="PLG_TINY_FIELD_TEMPLATE_FIELD_ELEMENTS_LABEL" | label="PLG_TINY_FIELD_TEMPLATE_FIELD_ELEMENTS_LABEL" | ||
− | default=" | + | default='{"template":["Layout","Simple snippet"], |
+ | "location":["layout1.html","snippet1.html"], | ||
+ | "description":["HTMLLayout","Simple HTML snippet"]}'> | ||
<fieldset hidden="true" name="list_templates_modal" repeat="true"> | <fieldset hidden="true" name="list_templates_modal" repeat="true"> | ||
<field name="template" | <field name="template" | ||
Line 52: | Line 57: | ||
</fieldset> | </fieldset> | ||
</field> | </field> | ||
+ | </source> | ||
+ | ===Betrachtungen zum Default-Wert=== | ||
+ | * Der Default darf Leerzeichen, Tabulatoren und neue Zeilen<ref>https://tools.ietf.org/html/rfc7158</ref> 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). | ||
+ | |||
+ | <source lang="php"> | ||
+ | // 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 | ||
+ | } | ||
</source> | </source> | ||
+ | ===Referenzen=== | ||
+ | <references> | ||
+ | </references> | ||
<noinclude> | <noinclude> | ||
− | [[Category:Standard form field types]] | + | [[Category:Standard form field types/de|Standardformularfeldtypen]] |
</noinclude> | </noinclude> |
Latest revision as of 04:13, 28 May 2019
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
}