Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2869 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Twig -> Utiliser une variable comme nom partiel d'une autre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Twig -> Utiliser une variable comme nom partiel d'une autre

n°2338862
Furaxx
Posté le 09-09-2019 à 08:58:30  profilanswer
 

Bonjour,
 
J'utilise Twig qui dans un template me génère des cards (Bootstrap) d'après les données d'un tableau (tab).
 
J'ai un autre tableau (stats) contenant des données, ayant comme clés ce qui est contenu dans "tab.name".
 
Je souhaiterais donc faire quelque chose du genre:
 

Code :
  1. {% for data in tab %}
  2.     {% for elem in stats.tab.name %}
  3.         /// Mon code
  4.     {% endfor %}
  5. {% endfor %}


 
Comme vous vous en doutez ça ne fonctionne pas, et je ne vois pas comment faire malgré mes recherches...
Par avance, merci!

mood
Publicité
Posté le 09-09-2019 à 08:58:30  profilanswer
 

n°2338875
rufo
Pas me confondre avec Lycos!
Posté le 09-09-2019 à 13:02:10  profilanswer
 

Je comprends que elem a la même valeur que tab.nme en fait, c'est ça ? T aligne 2 ne peut fonctionner car ce qui vient après "in" est un tableau. Or, tu donnes une valeur.
Pas sûr du coup que tu aies besoin de 2 boucles. La première devrait suffire. La syntaxe stats[data] ou stats[data.name] ou stats.data.name, ça marche ? Je ne connais pas Twig mais je comprends que data est un élément dépilé de tab.


Message édité par rufo le 09-09-2019 à 13:02:20

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2338882
Furaxx
Posté le 09-09-2019 à 15:02:55  profilanswer
 

tab.name est bien juste une variable "string", qui peut avoir comme valeur par exemple "intitule".
 
Par contre, "stats" est lui un tableau, et si je fais ma boucle avec: {% for elem in stats.intitule %}, ça fonctionne bien.
 
elem n'a donc pas la même valeur que tab.name, mais il a la valeur correspondant à la clé du tableau "stats[tab.name]" en quelque sorte.
En PHP je ferais $stats[$tab['name']].
 
Je ne sais pas si je suis très clair… ;)

n°2338885
mechkurt
Posté le 09-09-2019 à 15:28:09  profilanswer
 
n°2338886
xtieu
Posté le 09-09-2019 à 15:31:09  profilanswer
 

c'est un truc comme ça que tu veux ?  
 

Code :
  1. {% set tab = ['foo', 'bar', 'baz'] %}
  2.     {% set stats = {'foo': { 'name': ['foobar', 'foobaz']},
  3.         'bar': { 'name': ['barbar', 'barbaz']},
  4.         'baz': { 'name': ['bazfoo', 'bazbar']}} %}
  5.     {% for data in tab %}
  6.         {% for elem in stats[data]['name'] %}
  7.             {{ elem }}
  8.         {% endfor %}
  9.     {% endfor %}


Message édité par xtieu le 09-09-2019 à 15:31:55

---------------
There's more to life than the boy in that mirror.
n°2338892
rufo
Pas me confondre avec Lycos!
Posté le 09-09-2019 à 16:31:05  profilanswer
 

Au passage, j'ai jamais trop compris l'intérêt de passer par ce genre d'outil (Twig, Smarty...) pour faire une appli qui respect le MVC :??: Pourquoi passer par un pseudo-langage qui fait généralement moins de choses que le langage sur lequel il s'appuie (ici, PHP) ? Bien souvent, on se fait chier à trouver une syntaxe pour faire un truc dans ce pseudo-langage qu'on ferait facilement avec PHP :/
 
On peut trè bien faire une apli MVC en PHP où d'un côté, tu mets tes fichiers PHP qui se chargent de faire l'accès aux données, d'un autre, les fichiers PHP qui génèrent les vues et de l'autre, les fichiers PHP qui gèrent les contrôleurs qui s'appuient eux-mêmes sur les fichiers d'accès aux données et sur les vues.
 


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2339855
Furaxx
Posté le 05-10-2019 à 18:10:03  profilanswer
 

Tout d'abord merci pour votre aide à tous. :)
 
Pour te répondre rufo je suis passé à Twig un peu par curiosité au départ et j'ai trouvé ça très pratique rapidement.
Alors oui on a moins de possibilités mais ce n'est pas non plus le but d'un Template de faire du traitement donc une fois pris le coup je ne suis plus embêté par ça, hormis quelques fois comme ici où il s'agit plutôt d'une prise en main de l'outil qu'autre chose.
 
Sur Twig on retrouve quelques trucs assez pratiques comme des boucles "for-else", qui si le for ne trouve aucun élément (que le tableau soit vide où qu'il ne s'agisse même pas d'un tableau) on passe sur le else par exemple.
Autre exemple, pour afficher une variable: {{ma_variable}}. Inutile de vérifier si la variable existe. Si ce n'est pas le cas ça n'affiche rien, on n'a pas d'erreur.
Quelques petits trucs qu'on peut tout à faire faire en PHP mais qui ici sont simplifiés.
 
Perso je trouve ça pratique quoi. :)

n°2339865
flo850
moi je
Posté le 06-10-2019 à 20:33:40  profilanswer
 

rufo a écrit :

Au passage, j'ai jamais trop compris l'intérêt de passer par ce genre d'outil (Twig, Smarty...) pour faire une appli qui respect le MVC :??: Pourquoi passer par un pseudo-langage qui fait généralement moins de choses que le langage sur lequel il s'appuie (ici, PHP) ? Bien souvent, on se fait chier à trouver une syntaxe pour faire un truc dans ce pseudo-langage qu'on ferait facilement avec PHP :/
 
On peut trè bien faire une apli MVC en PHP où d'un côté, tu mets tes fichiers PHP qui se chargent de faire l'accès aux données, d'un autre, les fichiers PHP qui génèrent les vues et de l'autre, les fichiers PHP qui gèrent les contrôleurs qui s'appuient eux-mêmes sur les fichiers d'accès aux données et sur les vues.
 


bien sur que tu peux, mais un moteur de template te force a suivre cette convention, en plus d'avoir des affichage qui sont forcement echappés comme il faut et du gain en perf


---------------


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Twig -> Utiliser une variable comme nom partiel d'une autre

 

Sujets relatifs
[Script réseau] monter lecteur reseau avec variableTwig et nom de mois en français
[BASH] bad substitution sur formatage variableconcaténer nom de tableau et variable
Affichage variable selon page webComment passer une variable dans une fonction ??
Ecrire une variable tableau sur une feuille avec colonne masquéeeshta récupération de variable dans un formulaire
variable suivant une autre variableObtenir une variable (commande for) help
Plus de sujets relatifs à : Twig -> Utiliser une variable comme nom partiel d'une autre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR