
Home
» Talus' Works » Talus' TPL » Rapports de Bugs » [Filtres] Parser les {X,Y|filtre} » Lecture du Sujet » Page 1 | Forum Fermé - Sujet Fermé |
|
|
|
|
Bonjour, j'ai (encore) un problème ^^ J'essaye de faire ceci: mais ça ne fonctionne pas. Je voudrais "protéger" la sortie des données avec la fonction protect. Mon template me renvoie ceci: {VALUE,CONFIGURATION['reference']|protect} Mon cache: {VALUE,CONFIGURATION['reference']|protect} Est-ce possible de mettre des filtres sur des array? (j'ai essayé directement dans le fichier PHP, ça ne fonctionne pas non plus.) Dernière édition le 11/03/2009, à 22:55, par Talus |
|
|
|
|
|
Salut, C'est plutôt un bug, et plus précisément un oubli de ma part dans la regex correspondante. Pourrais-tu essayer de faire cette manip :
Code PHP
<?php
Ensuite, réactualise ton (en supprimant le fichier .php dans le répertoire de cache), et dis moi ce que ca fait ? Dev' de Talus' Works |
|
|
|
|
C'est "mieux", mais ça ne fonctionne toujours pas. Parse error: parse error, expecting `')'' in le_fichier_en_cache on line 12 Et les lignes 11 à 13: |
|
|
|
|
|
Mmh, en effet, je vois le problème... En fait, $VALUE n'est pas interprété (car la syntaxe est {VALUE,$MAVAR} et non {$VALUE,MAVAR})... En attendant, pourrais tu éviter de l'utiliser dans un foreach ? J'essaierais de corriger ce bug dans la prochaine version... (Pour l'utiliser dans une boucle, je te recommande les blocs à la place, en attendant...) Le bug est, en tout cas, bien noté ;). Dev' de Talus' Works |
|
|
|
|
C'est noté. Pour le moment j'ai résolu le problème en passant par une autre méthode (relative à mon site, ça ne sert à rien que je la donne). |
|
|
|
|
|
(J'ai édité ton titre, pour mieux m'y repérer pour la prochaine version) Dev' de Talus' Works |
|
|
|
|
Hello, Je remonte le sujet, pour savoir si la correction suivante peut régler le problème :
Code PHP
<?php
Merci d'avance. Dev' de Talus' Works |
|
|
|
|
Bonjour! Tout d'abord, félicitation pour le très bon moteur de template! J'ai un petit problème relié à ce sujet. Je me suis créé un filtre qui converti un timestamp en date lisible. Le filtre fonctionne sur une variable normale, mais quand j'utilise une variable sous la forme {VALUE,VARIABLE['timestamp']|monFiltre} j'obtiens une erreur : Parse error: parse error, unexpected '}', expecting ',' or ';' in C:\***\***\cache\index.tpl.php on line 21 J'ai fouillé un peu sur le forum. J'ai updaté avec la version 1.5.1 (en supprimant bien sure la cache). Toujours une erreur. J'ai aussi essayé ça : $return = preg_replace('`^\{\$(VALUE|GLOB|KEY),`i', '{$1,$', $return); dans le if et le else (compiler) en mettant la ligne présente en commentaire, sans succès. Merci pour ton aide future! |
|
|
|
|
|
Ah enfin quelqu'un qui a ce cas, pour m'aider à débugger. :D Pourrais-tu essayer ceci, en remplacant toute la méthode _filter dans Talus_TPL_Compiler :
Code PHP
<?php
Et dis moi si ca va mieux (pour la prochaine version, en principe) ? Et même mieux, fourni moi le résultat du cache après (dans la zone là) ? Par contre, note qu'avec cette solution, impossible de passer des array dans les filtres (que ce soit avec des variables ou non). Enfin si ca, déjà, ca marche, alors j'essaierais de faire marcher avec les array. Si ce n'est pas trop lourd après, évidemment... Dernière édition le 16/06/2009, à 21:52, par Talus Dev' de Talus' Works |
|
|
|
|
Bonjour! Ça ne va pas mieux! Toujours une erreur : Parse error: parse error, unexpected '}', expecting ',' or ';' in C:\***\***\cache\index.tpl.php on line 21 Ensuite, le code à la ligne 21 : <span class="titre"><?php echo $__tpl_foreach_value['NOUVELLES']['timestamp']|dateH} - {VALUE,NOUVELLES['titre']; ?></span> Le filtre que j'ai créé ce nomme dateH. Merci pour ton aide! |
|
|
|
|
|
Jihem a écrit :
Normal ! Il manque une } Correction :
Code PHP
<span class="titre"><?php echo $__tpl_foreach_value['NOUVELLES']['timestamp']|dateH} - {VALUE,NOUVELLES['titre']}; ?></span>
Ca devrait être bon comme ça. |
|
|
|
|
Bonjour! Pingax, je sais ça! Cependant ce code est généré par le moteur de template! Le } est présente dans le code de mon template, mais ne l'est plus dans la page en cache quand je remplace la méthode! |
|
|
|
|
|
Talus a écrit :
Pourrais-tu essayer de faire sans array ? {VALUE,QQCH|date}, au lieu de {VALUE,QQCH['cle']|date} ? Et au passage, {VAR|date}. Faut déjà vérifier que ca marche pour les vars simples, je regarderais plus tard pour les array :p Dev' de Talus' Works |
|
|
|
|
humm, ça fonctionne en utilisant {VAR|filtre}. De toute manière, j'ai transformé le tout avec les blocs et ça marche tempête. Cependant, qu'elle est la manière la plus optimisé pour passer le résultat d'une requête MySQL à un bloc? Voici un exemple tiré de mes codes, est-ce la façon la plus propre? while($donnees = mysql_fetch_assoc($reponse)) Merci encore! |
|
|
|
|
|
Oui, les blocs sont la facon la plus propre de faire si c'est pour parcourir des données (car itération), car tu as accès à d'autres trucs qui sont bien symathique, comme par exemple les stats (combien de tours à faire ? Est-ce le premier ? Est-ce le dernier ? Quel tour en cours ?). Le foreach est mieux dans les autres cas, c'est à dire aprcours d'un array en lui même. Mais comme la modif marche pour les variables normales, je voudrais aussi que tu testes pour les variables de type {TYPE,VAR}. Par exemple, {VALUE,VAR} ou bien {KEY,VAR} ou encore {GLOB,VAR] (dans le cadre d'une fonction). Après, je pourrais essayer de l'attaquer aux arrays. Tu pourrais donc me dire ce qui se passe dans ce cas ? N'ayant pas de quoi tester sous la main, ca me permet de tester le but de la manip... :) Dernière édition le 17/06/2009, à 19:54, par Talus Dev' de Talus' Works |
|
|
|
|
(Réglé en 1.6.0) Dev' de Talus' Works |
| Forum Fermé - Sujet Fermé |