Passage de variable entre smarty et php

Nouveau WRInaute
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:
{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}
 
Nouveau WRInaute
oui oui c'est bien ce que j'ai fait :

{assign var='prodConvert' value=$product->description} //

Mais je ne comprend pas pourquoi

$reader->open("$this->get_template_vars('prodConvert')");

Ne lit pas la variable comme une adresse normalement il devrais lire cela

$reader->open("http://www.bacata.net/RSS/CT%20White_FR.xml");

et je suis sur que la variable ''prodConvert prend bien la variable puisque si je fais un echo il affiche le lien
 
WRInaute accro
Essaye sans les guillemets ?

source : http://www.smarty.net/manual/fr/language.custom.functions.php
smarty a dit:
Exemple 8-3. Accès aux variables {assign} depuis un script PHP

Pour accéder aux variables {assign} depuis le script PHP, utilisez get_template_vars(). Ci-dessous, le template qui crée la variable $foo.

Code:
{assign var='foo' value='Smarty'}

Les variables de template ne sont disponibles que après/durant l'exécution du template, comme dans le script ci-dessous.
Code:
<?php

// ceci n'affichera rien car le template n'a pas encore été exécuté
echo $smarty->get_template_vars('foo');

// Récupère le template dans une variable
$whole_page = $smarty->fetch('index.tpl');

// Ceci affichera 'smarty' car le template a été exécuté
echo $smarty->get_template_vars('foo');

$smarty->assign('foo','Even smarter');

// Ceci affichera 'Even smarter'
echo $smarty->get_template_vars('foo');

?>
 
WRInaute passionné
Je ne connais pas trop smarty je m'en suis servi uniquement sur prestashop :
Codé php
Code:
$Smarty->assign('plop' => $ma_var_1,
'pwet' => $ma_var2);
Coté html
Code:
<div>{plop}</div>
<div>{pwet}</div>

J'ignore si ça pourra t'aider mais j'ai l'impression que tu fais ça dans le mauvais ordre, tu dois d'abord assigner et générer ton template, puis l'appeler.

Bon, peut-être y a-t-il des spécialistes de smarty dans le coin aussi.
 
Nouveau WRInaute
Je vois que vous utilisez toujours une $smarty c'est une variable que vous nommé au hazard, ou son nom a une raison particuliere. Desolé j'ai pas vraiment le temps de commencer a lire tout la doc sur smarty fo que ma boutique soit en ligne lundi absolut .... donc gros galere :oops:
 
WRInaute passionné
Justement, si tu veux vraiment qu'elle soit en ligne il va falloir que tu lises un peu son fonctionnement ;)

au départ du déclare ta classe avec un
Code:
$smarty = new Smarty();
ou truc du genre, d'où notre $smarty->function_de_la_classe.
 
Discussions similaires
C
Réponses
4
Affichages
1K
christele2
C
Haut