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.
InformationsquelleAutor Jack Brummer | 2017-03-29