Probleme de variable smarty=> php

Eléphanteau du PHP | 13 Messages

21 janv. 2010, 04:40

Bonjour,
je vous expose mon petit soucis,

j'ai du malheureusement trouve une solution pas tres commode pour lire une fichier xml dans le template d'une boutique en ligne (prstashop). Au fure et a mesure du temps j'ai reussi a me debrouiller pour developpper un p'tit bout de code qui fonction correctement si je tape l'adresse manuellement dans ce code mais cela ne m'arrange pas puisque chaque produit a sont propre fichier xml. J'ai donc fait quelque modification afin qu'il aie chercher le fichier lui meme. et c'est la que je dois donc passer une variable de smarty vers php. Mais parcequ'il y a un mais, cela ne m'affiche rien. J'ai fait une verif avec un echo la ca fonctionne, mais on dirait qu'il ne prend pas la variable pour direction.

si quelqu'un pouvais m'aider, je suis super dans la m...

Code : Tout sélectionner

{assign var='prodConvert' value=$product->description} // assignation de la variable pour le transfere a php {php} $myVar = $this->get_template_vars('prodConvert'); // recuperation de la variable echo "$myVar<br /><br />"; // controle de cette variable, la il m'affiche bien l'adresse (du type : http://www.bacata.net/RSS/CT%20White_FR.xml) //ouverture du fichier xml $reader = new XMLReader(); $reader->open("$this->get_template_vars('prodConvert')"); //ici si je tape l'adresse manuellement ca fonctionne mais avec la variable ca ne fonctionne pas ??? //on parcours le fichier xml while($reader->read()) { //rechercher de l'élément nommé 'item' if ($reader->nodeType == XMLREADER::ELEMENT && $reader->localName == "description") { //Lecture de son contenu if ($reader->read()) { $valeur = ($reader->value); //afficher la valeur de l'élément echo "$valeur<br /><br />"; } } } {/php}

ViPHP
ViPHP | 1136 Messages

21 janv. 2010, 09:48

Salut ,

Enlève les guillemets , et décode l'url , car je ne sais pas s'il aime le %20
$reader->open("$this->get_template_vars('prodConvert')");
Ce qui donne :
$reader->open(rawurldecode($this->get_template_vars('prodConvert')));
.. dis nous ce que ça donne ...

Ch.

Eléphanteau du PHP | 13 Messages

21 janv. 2010, 09:51

merci, je viens de regarder mais cela me fait toujours la meme chose.

Ce qui est etrange s'est que l'echo renvois bien l'url mais que open ne l'interprete pas.

ViPHP
ViPHP | 1136 Messages

21 janv. 2010, 10:05

Que retourne reader ? false ?

Peux tu tester avec la fonction readfile() , ( voir si cette fonction aussi pose probléme )

Ch.

Eléphanteau du PHP | 13 Messages

21 janv. 2010, 10:12

oui j'aurais du precisé aussi que j'y connais pas grand chose en programmation. Je que j'ai reussi a faire, je l'ai lu, lu et relus depuis pres de 2 semaines pour i arriver ;-) lol

ViPHP
ViPHP | 1136 Messages

21 janv. 2010, 10:30

Et bien pour le test , ajoutes juste cette ligne :
readfile(rawurldecode($this->get_template_vars('prodConvert')));
Ensuite es-tu obligé d'utiliser le protocole http pour lire le fichier , ( c'est un fichier distant ? )
Ne peux tu pas préciser le chemin direct à ce fichier ? ( si le fichier est en local )
readfile(rawurldecode('/RSS/CT/White_FR.xml'));
Ch.

Eléphanteau du PHP | 13 Messages

21 janv. 2010, 10:35

je regarde ca dans 5 minutes.

Concernant le lien direct, si je pourrais mais me faudrais une secretaire de nuit lol car le fichier csv de mon fournisseur faire +/- 900 produits, qui ont chacun leur propre fichier csv avec tout les informations.

Tu vois l'histoire ? c'est pour cela que je suis bloqué car pour l'instant je pourrais mettre ma boutique en ligne, mais aucun produit n'aurais de fiche informative ....

Pas le top quoi je viens de passer une nuit blanche la dessus je vois meme plus se que j'ecris

Eléphanteau du PHP | 13 Messages

21 janv. 2010, 10:43

voila je viens de faire le test, mais ca ne renvois rien, je ne sais pas si c'est normale ....

Si ca peut vous aider, la page http://homeservice.no-ip.biz/prestashop ... product=23

Code : Tout sélectionner

{assign var='prodConvert' value=$product->description} {php} $myVar = $this->get_template_vars('prodConvert'); readfile(rawurldecode($this->get_template_vars('prodConvert'))); echo "$myVar<br /><br />"; //ouvrir xml $reader = new XMLReader(); $reader->open($this->get_template_vars('prodConvert')); //Parcourir xml while($reader->read()) { //Chercher l'élément nommé 'item' if ($reader->nodeType == XMLREADER::ELEMENT && $reader->localName == "description") { //Lire son contenu texte if ($reader->read()) { $valeur = ($reader->value); //afficher la valeur de l'élément echo "$valeur<br /><br />"; } } } readfile(rawurldecode($this->get_template_vars('prodConvert'))); {/php}