
Home
» Talus' Works » Talus' TPL » Rapports de Bugs » Arrays dans des foreach » Lecture du Sujet » Page 1 | Forum Fermé - Sujet Fermé |
|
|
|
|
Bonjour. Actuellement, je stocke mes retours de MySQL dans des arrays. Je tente ensuite d'y accéder depuis le moteur de tpl via un foreach. Le problème est que je ne peux apparemment pas accéder aux variables de cette manière :
Code
{VALUE,NEWS['news_id']} /* mon array est $NEWS */
Lorsque je parse, je reçois une erreur :
Code
Parse error: syntax error, unexpected ')', expecting T_PAAMAYIM_NEKUDOTAYIM in /home/vincent/Projets/warbuilder/libs/talus_tpl.class.php(330) : eval()'d code on line 5
Je suppose que l'erreur vient de ce code, puisque en allant dans le cache, il reste sous sa forme citée. Y a-t-il moyen d'y remédier en l'état ? Dans une future version ? Ou le problème ne vient-il pas là ou j'ai raté une fonction de TalusTPL... Merci d'avance, PS : je connais l'existence des blocks, mais suis habitué à passer par des foreach. ;) Dernière édition le 26/02/2008, à 17:05, par vincent1870 |
|
|
|
|
|
Yop, Mauvais forum (ca m'apprendra à pas aller plus vite dans le déplacement :p) Mis à part ca, fais voir un peu le résultat du cache, et celui de ton TPL (aux environs de la 5e ligne de ton TPL) ? EDIT > Ah, je crois avoir trouvé pourquoi. C'est en effet un bug (ou plutot un oubli) dans la regex des foreach. Cherches vers la ligne 372 et la ligne 374 (ligne pour les VALUE), et remplaces les par :
Code PHP
<?php
Sinon, je vois pas d'ou ca peut venir... :p Dernière édition le 26/02/2008, à 19:00, par Talus Dev' de Talus' Works |
|
|
|
|
Bonjour. Tout d'abord, désolé pour le forum, il est trop imbriqué le Rapports de bugs, on ne le voit même pas depuis l'accueil. :( Je ne le referai plus. :D Ensuite, ton truc a résolu un bug. Autre bug : impossible de mettre un _ dans un style {NEWS['news_id']}. J'ai du le rajouter dans la REGEX. Ensuite c'est cette ligne qui fait bugger maintenant :
Code
{LANGUES[{VALUE,$NEWS['news_langue']}]}
Je veux en effet afficher la valeur de LANGUE ayant pour clé un truc du foreach. Du coup, au parsage, cela bug, et c'est normal d'après la REGEX en place. Ca donne :
Code
{LANGUES[<?php $__tpl_foreach_value[\'NEWS\'][\'news_langue\']}]; ?>
En commentant cette ligne, tout marche. ;) Merci d'avance, |
|
|
|
|
|
Yop, y'as pas de problème. A la limite, je descendrais le forum de rapports de bugs au niveau du général et de la doc, ce sera plus simple :p Concernant le _, c'était un oubli de ma part, mais ce sera corrigé pour la prochaine version. Oui, je vois ; j'essayerais de pouvoir le faire dans une prochaine version. C'est difficile, car les variables foreach sont parsées avant les variables... Ce qui entraîne ce résultat. Si je parse avant les variables, je risque d'avoir le même problème... Pour les foreach ;) D'où les blocs :p De même, pour le fait que tu fasses bugger ce (super) moteur de templates, pas de soucis, ca le met à l'épreuve, et donc ca me permet de l'améliorer :D (Rien n'est parfait, comme on dit) Dernière édition le 27/02/2008, à 13:53, par Talus Dev' de Talus' Works |
|
|
|
|
D'accord, vivement les prochaines versions et merci de tes réponses rapides. :) |
|
|
|
|
|
Voilà, le forum des rapports de bugs de Talus' TPL a bien été bougé :D Dev' de Talus' Works |
|
|
|
|
En déplacant les sujets, je retombe sur celui-ci ; pourrait-on me dire si y'a toujours le bug pour le foreach (pour une variable {VAR[{VALUE,$VAR}]}) ? Merci d'avance. Dev' de Talus' Works |
|
|
|
|
Oui il y est toujours. :( {LANGUES[{VALUE,$NEWS['news_langue']}]} |
|
|
|
|
|
Et essaye en le mettant en dehors de l'array ? ({VALUE,NEWS['news_langue']}) Dev' de Talus' Works |
|
|
|
|
Euh, pas compris. Je mets quoi en dehors ? |
|
|
|
|
|
Le truc que j'ai mis entre parenthèses, pour voir si les arrays sont OK pour les foreach... Dev' de Talus' Works |
|
|
|
|
Oui oui, les arrays sont OK dans les foreachs. Mais le bug initial est toujours présent. ;) |
|
|
|
|
|
Ok, j'arrive à voir pourquoi est-ce que le truc est stoppé... (les arrays s'arretant dès que ca rencontre un }... } rencontré par la fermeture de balises). Pourrais tu essayer ceci :
Code TPL
{MAVAR[{$AUTRE_VAR}]}
Dev' de Talus' Works |
|
|
|
|
Plop, Si tu es toujours dans les parages, pourrais-tu essayer en faisant cette regex, pour les variables (on étendra au reste après si ca marche) :
Code
`\{([A-Z_][A-Z0-9_]*)(\[^]])*}`
Merci d'avance Dernière édition le 03/07/2008, à 16:34, par Talus Dev' de Talus' Works |
|
|
|
|
Bug réglé pour la prochaine release ! Dev' de Talus' Works |
| Forum Fermé - Sujet Fermé |