Créer un tableau avec Twig
J'ai cela en PHP:
$units = array();
foreach ($popPorts as $port) {
$units[$port->getFrameNo()][$port->getSlotNo()][$port->getPortNo()] = $port->getPortNo();
}
Comment puis-je obtenir le même dans twig?
J'ai essayé jusqu'à présent:
{% set frames = [] %}
{% for row in object.popPorts %}
{% set frames[row.frameNo][row.slotNo][row.portNo] = row.portNo %}
{% endfor %}
{{ dump(frames) }}
Mais ensuite, j'obtiens une erreur:
Jeton inattendu "ponctuation" de valeur "[" ("la fin de l'instruction de bloc"
attendu).
La sortie devrait ressembler à ceci:
array (size=3)
(frame) 1 =>
array (size=2)
(slot) 1 =>
array (size=4)
0 => (port) 26
1 => (port) 27
2 => (port) 28
3 => (port) 29
(slot) 5 =>
array (size=2)
0 => (port) 31
1 => (port) 34
(frame) 2 =>
array (size=1)
(slot) 3 =>
array (size=1)
0 => (port) 32
(frame) 3 =>
array (size=1)
(slot) 6 =>
array (size=1)
0 => (port) 33
- pouvez-vous donner un exemple de votre $unités quand c'est fait? parce que je pouvais être que la "ligne" n'a pas de clé nommée "frameNo"
- Faire cela dans twig va probablement être ennuyeux. Vous pouvez utiliser attribut pour l'utilisation de la dynamique de la valeur de la clé, mais vous ne savez pas comment il va travailler dans des structures imbriquées. Je dirais que la conversion de types est la logique qui doit être fait dans un Transformateur/Convertisseur de classe dans votre code et pas dans votre modèle.
- Vous ne pouvez pas le faire dans twig, vous avez besoin pour exemple
merge()
. Mais bien qu'il est possible, mais il conduit à un grand nombre de laide code (vous avez besoin de variables temporaires pour vos clés...). Donc, si vous pouvez le faire en php et envoyer le résultat à brindille, je vous recommande ce lieu.
Vous devez vous connecter pour publier un commentaire.
Je crains que vous ne pouvez pas créer des tableaux comme ça dans Twig. Même en ajoutant de nouveaux éléments à un tableau est compliqué parce que vous avez besoin pour créer un tableau pour le nouvel élément et de les enchaîner avec le tableau existant. Exemple:
Je sais que c'est horrible, mais tout cela est fait à dessein. Twig est destiné à créer des modèles, de sorte que les fonctions disponibles pour créer ou traiter les informations sont limitées sur le but. L'idée est que la lourdeur du traitement des données doit être faite avec PHP.
D'une autre manière :