J'utilise un toolkit de template pour former une simple réponse JSON (voir le code ci-dessous). Je dois mettre une virgule après tous les éléments de la réponse sauf le dernier. Je crois que je dois utiliser l'itérateur TTs, mais je ne comprends pas bien.
Avec ce code, une virgule est toujours imprimée à la fin du dernier élément.Template Toolkit, test de la dernière itération dans une boucle imbriquée
Le problème réside dans la section qui contient
[% UNLESS outer.last && loop.last %],[% END %]
cela devrait ajouter une virgule à moins que les boucles extérieures et intérieures sont sur leur dernière itération.
Toute aide sur ce que je me trompe grandement apprécié.
{ "success": true, "filesdata": [
[%~ USE outer = iterator(objects); FOREACH object IN outer;
FOREACH rep IN object.reps;
IF rep.rep == reptype %]
{ "id":"[% object.id | xml %]", "url":"[% rep.src | xml %]", "story":"[% object.story | xml %]" }[% UNLESS outer.last && loop.last %],[% END %]
[%~ END;
END;
END ~%]
] }
Je répète ce que oalders dit au sujet de l'aide d'un plug-in. Personnellement, j'aime Template :: Plugin :: JSON :: Escape, mais l'important est d'éviter la génération de code à la main. Vous augmentez considérablement le risque d'une condition/valeur inattendue provoquant l'explosion de votre modèle au moment de l'exécution. – RET