Campo de Formulario, Tipo repeatable
From Joomla! Documentation
Por favor usa el campo de subformulario (en modo múltiple) en cambio de esto.
Proporciona un modal con filas de los campos de formulario que especifiquea. Se pueden agregar tantas opciones como desees. Nota que este campo de formulario esta basado en jQuery como una dependencia de un archivo javascript.
- name (obligatorio) es el nombre único del parámetro.
- type (obligatorio) debe ser repeatable.
- label (obligatorio) (traducible) es el título descriptivo del campo.
- description textto descriptivo para el campo de formulario. Se muestra en la parte superior de la modal con el nombre, así como en la posición usual en el formulario.
- default El valor predeterminado para el campo de formulario si el campo se deja vacío. Nota: esto tiene que ser una cadena json compatible con el contenido del campo de formulario.
- id id del campo oculto del formulario. (el modal tendrá este id con un sufijo "_modal" y la tabla dentro de la modal tendrá este id con un sufijo "_modal_table").
- class clase de la tabla.
- select (traducible) El texto a mostrar en el botón modal.
- icon el icono a mostrar en el botón seleccionar (con el prefijo "icon-").
- maximum el número máximo de filas de campos que se permite (por defecto 999 puede ser efectivamente infinito).
Para crear un campo de formulario que en primer lugar debes crear un campo de formulario repetible como de costumbre.
<fields>
Dentro de este ha que colocar etiquetas abrir y cerrar (si no está ya en uno - si hay una etiqueta de los campos existentes para params etc. esto no es necesario.) y dentro de esta etiqueta.
<fieldset>
La etiqueta fieldset DEBE tener un nombre, el mismo nombre se usa en su campo repetible con "_modal" agregado al final del mismo - también debe tenerlo la etiqueta fieldset.
repeat="true"
Dentro de este conjunto de campos, a continuación, incluir los campos de formulario que desea repetir (como con cualquier campo de formulario).
Ejemplo de Definición XML:
<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>
Consideraciones para el valor predeterminado
- El predeterminado puede contenes tabs y retornos de línea [1] (para una mejor lectura)
- En los elementos de datos dentro de la cadena se deben usar comillas dobles " en vez de las simples '. Si no lo hace, fallará la decodificación de json.
Obteniendo tus datos
La configuración de un campo repetible es entregada como una matriz json codificada (igual a la predeterminada)
// 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
}