Repeatable formulierveld type
From Joomla! Documentation
Gebruik alstublieft het Subform form field type (in multiple modus) in plaats hiervan.
Biedt een modaal vak met rijen formuliervelden die u opgeeft. Er kunnen net zo veel opties toegevoegd worden als gewenst. Let op dat dit formulierveld een op jQuery gebaseerd javascript-bestand als afhankelijkheid heeft.
- name (verplicht) is de unieke naam van de parameter.
- type (verplicht) moet repeatable zijn.
- label (verplicht) (vertaalbaar) is de beschrijvende titel van het veld.
- description beschrijvende tekst voor het formulierveld. Wordt getoond boven aan het modale vak met de naam en de gebruikelijke positie in het formulier.
- default De standaard waarde voor het formulierveld indien het veld leeg gelaten wordt. Let op dat dit een json string moet zijn compatibel met de inhoud van het formulierveld.
- id id van het verborgen formulierveld. (het modale vak zal dit id hebben met een extra achtervoegsel "_modal" en de tabel in het modale vak zal dit id met het achtervoegsel "_modal_table") hebben.
- class class van de tabel.
- select (vertaalbaar) De tekst die getoond wordt op de modale knop.
- icon de icoon die op de geselecteerde knop getoond wordt (heeft als voorvoegsel "icon-").
- maximum het maximum aantal rijen met velden toegestaan (standaard 999 om oneindig te zijn).
Om een formulierveld aan te maken moet u eerst zoals gewoonlijk een herhaalbaar formulierveld maken.
<fields>
Hier binnen plaatst u open en sluit tags (als u er nog niet in zit - als er een bestaande 'fields' tag voor params etc. is, dan hoeft dit niet.) en hierbinnen een tag.
<fieldset>
De fieldset tag MOET een naam hebben die gelijk is aan de repeatable field naam met "_modal" toegevoegd aan het eind - het moet ook in de fieldset tag geplaatst zijn.
repeat="true"
Binnen deze fieldset neemt u dan de formuliervelden op die u herhaalt wil hebben (zoals elk formulierveld).
Voorbeeld XML definitie:
<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>
Overwegingen voor de standaardwaarde
- De standaard mag spaties, tabs en nieuwe regels bevatten [1] (zorgt voor betere leesbaarheid)
- De data elementen binnen de string moeten omgeven worden door " in plaats van '. Als dit niet gebeurt zal het json decoderen bij de standaard waarden laten mislukken.
Het ophalen van uw gegevens
De instellingen van een herhaalbaar formulierveld worden teruggegeven als een json gecodeerde array (hetzelfde als de standaard)
// 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
}