Bonjour à tous,
Je suis en train de développer une nouvelle section dynamique "Zone d'intervention" avec Silex et Squidex, et je rencontre un problème concernant les boucles imbriquées.
Structure de mon schéma Squidex
J'ai deux tableaux indépendants :
provinces
├── provincename
├── province-description
villes
├── province
├── cityname
├── citydescription
├── cityimg
├── cityurl
├── citystyle
└── isactive
Le champ villes.province contient le nom de la province (par exemple : Province de Liège).
Structure Silex
Section
│
└── Province Block
(Loop : provinces)
│
├── Province Header
│ ├── Bouton
│ └── Description
│
└── Cities Grid
│
└── City Card
(Loop : villes)
La boucle sur les provinces fonctionne parfaitement.
Ce que je souhaite obtenir
Pour chaque province, afficher uniquement les villes qui lui appartiennent.
Exemple :
Province de Liège
Huy
Waremme
Hannut
Province de Namur
Namur
Dinant
Ciney
Le problème
Je voudrais simplement appliquer une condition sur la boucle des villes :
ville.province == province courante.provincename
ET
ville.isactive == true
Mais dans l'éditeur d'expressions de Silex, je n'arrive pas à accéder à la province courante de la boucle parente.
Les expressions proposées semblent toujours repartir de :
queryZoneDIntervention
→ first
→ flatData
→ provinces
→ first
ou
queryZoneDIntervention
→ first
→ flatData
→ villes
→ first
Ce qui revient à comparer la première province avec la première ville, et non les éléments actuellement parcourus par les boucles.
Mes questions
Est-il possible d'accéder à l'élément courant de la boucle parente depuis une boucle imbriquée ?
Existe-t-il une notion de contexte parent ou une variable représentant l'élément actuellement parcouru ?
Ou bien ce type de structure n'est-il pas encore supporté par Silex ?
Si cette fonctionnalité n'existe pas, je peux évidemment modifier mon schéma Squidex pour imbriquer directement les villes dans chaque province, mais j'aimerais éviter cette duplication des données si une solution existe déjà.
Merci d'avance pour vos éclaircissements !