Development #45695
blocs de champs : disposer d'une variable block_counter
0%
Description
Principalement pour l'affichage, disposer d'une variable block_counter, sur le modèle de forloop de Django, permettant de faire par exemple un titre ou un commentaire « Déclaration du véhicule n°{{block_counter.index}} »
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Lauréline Guérin il y a plus de 2 ans
- Lié à Development #56939: Numéroter les blocs de champs à l'affichage ajouté
Mis à jour par Lauréline Guérin il y a environ 2 ans
- Fichier 0001-blocks-bloc_loop-variable-in-context-45695.patch 0001-blocks-bloc_loop-variable-in-context-45695.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Pierre Cros il y a environ 2 ans
Pour préciser l'usage (et vérifier que je le comprends comme il faut), ça va permettre de numéroter les occurrences d'un bloc de champs.
On va mettre dans le bloc de champs un champ titre ou un champ commentaire qui comprendra la variable {{bloc_loop.counter}}, cette dernière étant incrémentée à chaque occurrence.
Exemple, un bloc avec un champ titre "Enfant {{bloc_loop.counter}}" permettra d'afficher dans un formulaire dans lequel deux enfants sont renseignés :
Enfant 1
[...]
Enfant 2
[...]
Mis à jour par Frédéric Péters il y a environ 2 ans
Oui, ou "Déclaration du véhicule n°1", "Déclaration du véhicule n°2", pour reprendre l'exemple de la description; techniquement ça permet éventuellement des débordements, dont il pourrait être utile de se prémunir.
Mis à jour par Thomas Noël il y a environ 2 ans
Pierre Cros a écrit :
Pour préciser l'usage (et vérifier que je le comprends comme il faut), ça va permettre de numéroter les occurrences d'un bloc de champs.
On va mettre dans le bloc de champs un champ titre ou un champ commentaire qui comprendra la variable {{bloc_loop.counter}}, cette dernière étant incrémentée à chaque occurrence.
Exactement. Et ça peut paraître un peu alambiqué comme formule, mais c'est pour rejoindre un peu la syntaxe de "forloop" (voir en bas de la doc de "for" dans Django https://docs.djangoproject.com/fr/2.2/ref/templates/builtins/#for).
A noter un petit glitch : avec 3 fois le blocs, on aura "nom 1", "nom 2" et "nom 3", tout va bien. Si on supprime le deuxième, il restera affiché "nom 1" et "nom 3". Mais après cliqué sur suivant, l'affichage sera bien "nom 1" et "nom 2" dans la page de recap finale (puisqu'il n'y a finalement que deux bloc). Aussi, si on ajoute un élément alors que l'affichage est un peu bogué (en mode "nom 1" et "nom 3"), ça redevient correct aussi, on a les trois "nom 1, "nom 2" (qui a le contenu du "nom 3" boguant) et "nom 3".
Ca ne me semble pas très gênant, peut-être au contraire ça peut faire comprendre à l'usager qu'il a bien supprimé le deuxième (puisqu'il reste 1 et 3). Ca me semble par ailleurs un bogue assez complexe à éviter (javascript).
Je valide en tout cas le code, si quelqu'un pense que le glitch d'affichage décrit ici est trop problématique, le dire vite avant que Zébu pouche.
Mis à jour par Thomas Noël il y a environ 2 ans
Frédéric Péters a écrit :
(...) techniquement ça permet éventuellement des débordements, dont il pourrait être utile de se prémunir.
Je n'ai pas compris ça, tu peux détailler ?
Mis à jour par Frédéric Péters il y a environ 2 ans
Sur le patch (et l'intitulé du ticket), j'aurais dit block_loop plutôt que bloc_loop, mais même, pour quelque chose qui me semble plus clair que venir parler de boucle, block_counter, qui aurait block_counter.index et block_counter.index0.
Par rapport à mon commentaire précédent, "ça permet éventuellement des débordements", je serais pour avoir le with get_publisher().substitutions.temporary_feed(context):
appliqué uniquement quand on est sur un champ ('title', 'subtitle', 'comment'), ne pas permettre dès ce patch que ça se trouve détourné dans du préremplissage ou autre, qu'on attende le moment d'un besoin explicitement décrit pour l'autoriser.
Mis à jour par Lauréline Guérin il y a environ 2 ans
Mis à jour par Thomas Noël il y a environ 2 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Lauréline Guérin il y a environ 2 ans
- Sujet changé de blocs de champs : disposer d'une variable bloc_loop à blocs de champs : disposer d'une variable block_counter
- Description mis à jour (diff)
Mis à jour par Lauréline Guérin il y a environ 2 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 5d88590b00559fae7d8ddc4a36f5cc6c9fdb8588 Author: Lauréline Guérin <zebuline@entrouvert.com> Date: Fri Feb 25 15:49:26 2022 +0100 blocks: block_counter variable in context (#45695)
Mis à jour par Transition automatique il y a environ 2 ans
- Statut changé de Résolu (à déployer) à Solution déployée
Mis à jour par Lauréline Guérin il y a plus d'un an
- Lié à Development #67812: {{ block_counter.index}} n'est pas interprété lors de la saisie en BO ajouté
blocks: block_counter variable in context (#45695)