Documentation en ligne

Les blocs de champs

Les blocs de champs permettent de créer un ensemble de champs qui viendra s'insérer dans un ou plusieurs formulaires. Ils fonctionnent de manière dynamique : une modification apportée à un bloc de champs sera automatiquement répercutée sur tous les formulaires utilisant ledit bloc.

Ces blocs ont par ailleurs la particularité de pouvoir être ajoutés plusieurs fois dans une démarche. Lorsque l'on souhaite permettre à un usager de joindre plusieurs fichiers dans le formulaire sans en connaître le nombre exact, on peut utiliser un bloc de champs contenant uniquement un champ de type fichier et qui permettra à l'usager d'ajouter autant de fichiers que nécessaire.

Un cas d'usage classique est un bloc de champs « Enfant » (prénom, nom, date de naissance), qui ne sera affiché qu'une fois dans le formulaire à l'origine, mais que le demandeur va pouvoir démultiplier autant de fois que nécessaire en fonction de son nombre d'enfants.

Créer un bloc de champs

Un bloc de champs a un nom, un identifiant - qui permettra d'accéder au bloc avec les variables -, et un gabarit de résumé.

L'ajout, la modification et la réorganisation des champs est identique à la construction d'un formulaire. Il est possible d'ajouter à peu près tous les types de champs habituels, sauf une page, un tableau (tableau simple, tableau de liste et tableau de longueur libre) et les éléments classés.

L'ajout d'un identifiant aux champs du bloc permet d'accéder à la valeur d'un champ, mais contrairement à un champ de formulaire, l'identifiant ne sera pas form_var_identifiant mais sera noté ..._identifiant. les ... seront remplacés par l'identifiant du bloc de champs dans le formulaire, comme on va le voir juste après.

exemple d'un bloc de champs avec des identifiants

L'identifiant du bloc va permettre d'accéder aux valeurs des champs du bloc. Ainsi pour un bloc ayant pour identifiant bloc_enfant, les champs du bloc auront pour identifiant bloc_enfant_prenom, bloc_enfant_nom...

Insérer un bloc de champs dans un formulaire

Une fois un bloc de champs défini, il apparaît automatiquement dans la liste des types de champs, après les champs de mise en forme.

liste des types de champs avec un bloc de champ

Une fois le bloc ajouté, il convient de le paramétrer en indiquant les paramètres habituels d'un champ (obligatoire ou facultatif, l'affichage, les classes de styles, les conditions d'affichage...). Il y a deux paramètres spécifiques au bloc :

  • le nombre maximal d'éléments : le nombre de blocs que l'usager pourra ajouter ; vide ou zéro correspond à aucun : l'usager ne pourra pas ajouter de bloc
  • le libellé du bouton « Ajouter » : si vide, le bouton n'apparaît pas et il n'est pas possible d'ajouter un bloc

Accéder aux valeurs

Les valeurs de chaque bloc sont accessibles avec un indice incrémentiel.

Ainsi, sur notre exemple ci-dessus, les prénoms des enfants seront accessibles (pour un champ de formulaire ayant pour identifiant enfant_scolarise, par exemple) avec

{{form_var_enfant_scolarise_0_prenom}}
{{form_var_enfant_scolarise_1_prenom}}
{{form_var_enfant_scolarise_2_prenom}}

Pour lister les champs quand on ne sait pas combien de blocs ont été ajoutés, on utilise une boucle :

{% for enfant_scolarise in form_var_enfant_scolarise %}{{ enfant_scolarise.prenom }} {% endfor %}

Il est également possible de récupérer la liste avec le filtre |getlist :

{{form_var_enfant_scolarise|getlist:"prenom"}}

Enfin, il existe un filtre pour faire une addition sur un champ d'un bloc de champs : |sum

form_var_monbloc|getlist:"montant"|sum

Afficher les valeurs

Afin d'afficher les différentes valeurs du bloc au sein d'une colonne dans les tableaux de traitement, il faut définir un « Gabarit du résumé » dans les « Paramètres » du bloc.

Ainsi, sur notre exemple ci-dessus, les noms complets des enfants seront affichés si le gabarit de de résumé du bloc est configuré avec {{bloc_enfant_var_prenom }} {{ bloc_enfant_var_nom }} et apparaîtront ainsi dans la colonne : Zoé Durand, Marius Martin. Cette valeur sera accessible avec form_var_enfant_scolarise.

 

Dernière mise à jour le 14 septembre 2020 15:57 — Éditer