Type de champ de formulaire répétable

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
Ce champ est obsolète

Veuillez utiliser Type de champ de formulaire sous-formulaire (en mode multiple).

Fournit une fenêtre modale avec des lignes de formfields que vous spécifiez. De nombreuses options peuvent être ajoutées en fonction de vos besoins. Remarquez que ce champ de formulaire contient un jQuery basé sur un fichier javascript en dépendance.

  • name (nom) (obligatoire) est le nom unique du paramètre.
  • type (obligatoire) doit être "répétable".
  • label (étiquette) (obligatoire) (traduisible) est le titre descriptif du champ.
  • description texte de description du champ de formulaire. Affichée en haut du nom en modale ainsi que dans la position habituelle dans le formulaire.
  • default (par défaut) la valeur par défaut pour le champ de formulaire si le champ est laissé vide. Remarquez que celle-ci doit être une chaîne json compatible avec le contenu du champ de formulaire.
  • id id du champ de formulaire caché. (la fenêtre modale aura cet id avec un suffixe "_modal" et le tableau dans la modale aura cet id avec comme suffixe : "_modal_table").
  • class classe de la table.
  • select (sélectionner) (traduisible) le texte à afficher sur le bouton en modal.
  • icon l'icône à afficher sur le bouton de sélection (avec le préfixe "icon-").
  • maximum le nombre maximum de lignes de champs autorisé (par défaut 999 pour être effectivement infini).

Pour créer un champ de formulaire, vous devez tout d'abord créer un champ de formulaire répétable.

<fields>

A l'intérieur, vous allez créer des balises ouvrantes et fermantes (si elles ne sont pas déjà imbriquées dans une autre) et dans celles-ci une balise :

<fieldset>

La balise fieldset DOIT avoir un nom identique à votre nom de de champ répétable suivi de "_modal". Il doit également être placé dans la balise fieldset.

repeat="true"

A l'intérieur de ce fieldset, vous pouvez ensuite inclure les champs de formulaire que vous souhaitez répéter (comme avec n'importe quels autres champs de formulaire).

Exemple de définition 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>

Considérations pour la valeur par défaut

  • La valeur par défaut peut contenir des espaces de tabulation et des nouvelles lignes [1] (pour une meilleure lisibilité).
  • Les éléments de données dans la chaîne doivent être indiqués à l'aide de " plutôt que '. Tout manquement entraînera une perte des valeurs par défaut json.

Récupération de vos données

Les paramètres d'un champ de formulaire répétable dans un tableau (array) encodé json (par défaut).

// 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
}

Références

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