Passage de variable entre smarty et php

regnierjoffrey
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 4
Inscription: 21 Jan 2010

Passage de variable entre smarty et php

Message le Jeu Jan 21, 2010 3:20

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}


bproductiv
WRInaute accro
WRInaute accro
 
Messages: 4173
Inscription: 27 Déc 2004

Re: Passage de variable entre smarty et php

Message le Jeu Jan 21, 2010 8:09

est ce que tu as cherché sur le site de smarty ?
il faut passer par un assign.

regnierjoffrey
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 4
Inscription: 21 Jan 2010

Re: Passage de variable entre smarty et php

Message le Jeu Jan 21, 2010 8:23

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


bproductiv
WRInaute accro
WRInaute accro
 
Messages: 4173
Inscription: 27 Déc 2004

Re: Passage de variable entre smarty et php

Message le Jeu Jan 21, 2010 8:35

Essaye sans les guillemets ?

source : http://www.smarty.net/manual/fr/language.custom.functions.php
smarty a écrit: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: Tout sélectionner
{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: Tout sélectionner
<?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');

?>

regnierjoffrey
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 4
Inscription: 21 Jan 2010

Re: Passage de variable entre smarty et php

Message le Jeu Jan 21, 2010 8:59

oui j'avais deja fait le test mais sans grand resultat.

c'est vraiment etrange ..... j'ai testé en local et en ligne meme resultat


Julia41
WRInaute passionné
WRInaute passionné
 
Messages: 1765
Inscription: 31 Aoû 2007

Re: Passage de variable entre smarty et php

Message le Jeu Jan 21, 2010 10:57

Je ne connais pas trop smarty je m'en suis servi uniquement sur prestashop :
Codé php
Code: Tout sélectionner
$Smarty->assign('plop' => $ma_var_1,
'pwet' => $ma_var2);

Coté html
Code: Tout sélectionner
<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.

regnierjoffrey
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 4
Inscription: 21 Jan 2010

Re: Passage de variable entre smarty et php

Message le Jeu Jan 21, 2010 11:01

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:


Julia41
WRInaute passionné
WRInaute passionné
 
Messages: 1765
Inscription: 31 Aoû 2007

Re: Passage de variable entre smarty et php

Message le Jeu Jan 21, 2010 11:12

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: Tout sélectionner
$smarty = new Smarty();

ou truc du genre, d'où notre $smarty->function_de_la_classe.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités