Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Templates > Smarty
Smarty Forum d'entraide sur le moteur de templates Smarty. Avant de poster -> FAQ Smarty et Cours Smarty
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/01/2008, 16h30   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 78
Points : 11
Points : 11
Par défaut Passage d'une variable tpl à une page php

Bonjour tout le monde,

je souhaiterai passer une variable que je calcule dans un tpl à un fichier php sans passer ni par un GET ni par POST, j'ai cherché dans plusieurs tutos mais je n'ai pas trouvé réponse à ma question, j'ai utilisé plusieurs méthodes comme inclure du code php dans le tpl afin de créer une variable session voici ce que j'ai fais:
Code :
1
2
3
4
5
6
{php}
session_start();
 session_unregister("amount");
$amount=$smarty.{$total};
$_SESSION['amount']=$amount;
session_register("amount");		{/php}
mais cela ne marche pas il ne reconnait pas {$total} calculé en haut de la page.

aussi j'ai utilisé ce bout de code dans la page de destination :
Code :
1
2
$dead = $smarty->fetch('commande.tpl');
$amount = $smarty->get_template_vars('total');
mais il m'affiche 0 le premier assign de total car la variable total est assigné à plusieurs reprises car je boucle pour faire un calcul dessus.

merci d'avance pour ceux qui répondrons à ma demande .
foulla est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2008, 16h37   #2
Membre du Club
 
Inscription : mai 2006
Messages : 142
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 142
Points : 54
Points : 54
en regardant rapidement :
je me demande si tu ne devrais pas refermer ta balise {php} juste avant d'écrire ta variable smarty {$total}, sans ça, il me semble que c'est normal que {$total} ne soit pas calculé.
essayes ça :
Code :
1
2
3
4
5
6
7
{php}
session_start();
session_unregister("amount");
$amount=$smarty.{/php}{$total}{php};
$_SESSION['amount']=$amount;
session_register("amount");
{/php}
yanice est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2008, 16h47   #3
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 78
Points : 11
Points : 11
j'ai déjà essayé mais ça ne marche pas ça bloque complétement l'affichage.
foulla est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2008, 20h22   #4
Membre habitué
 
Avatar de giltonic
 
Inscription : juillet 2002
Messages : 109
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : juillet 2002
Messages : 109
Points : 124
Points : 124
Citation:
Envoyé par foulla Voir le message
Bonjour tout le monde,

je souhaiterai passer une variable que je calcule dans un tpl à un fichier php sans passer ni par un GET ni par POST, j'ai cherché dans plusieurs tutos mais je n'ai pas trouvé réponse à ma question, j'ai utilisé plusieurs méthodes comme inclure du code php dans le tpl afin de créer une variable session voici ce que j'ai fais:
Code :
1
2
3
4
5
6
{php}
session_start();
 session_unregister("amount");
$amount=$smarty.{$total};
$_SESSION['amount']=$amount;
session_register("amount");		{/php}
mais cela ne marche pas il ne reconnait pas {$total} calculé en haut de la page.

aussi j'ai utilisé ce bout de code dans la page de destination :
Code :
1
2
$dead = $smarty->fetch('commande.tpl');
$amount = $smarty->get_template_vars('total');
mais il m'affiche 0 le premier assign de total car la variable total est assigné à plusieurs reprises car je boucle pour faire un calcul dessus.

merci d'avance pour ceux qui répondrons à ma demande .
Personnellement je ne comprends pas pourquoi vous essayez de recoder du php dans un template smarty. Autant l'ecrire dans le fichier .php non ? parce que c'est la philosophie "smarty" : le tpl est là pour l'affichage pas pour repasser des variables a du php, (si ?? je me plante ?)

.php + .tpl => fichier au navigateur client.

Donc plutôt que de mettre ça dans le .tpl faites vos récups de données de session dans le .php.
Car il est fort possible qu'un petit bout de données (un espace etc...) soit déjà envoyer au navigateur et dans ce cas, il n'est plus possible d'intervenir sur les variables de session. (Les sessions c'est dans le header de la page).
__________________
Musique : Oasis | Photos : Panoramio
giltonic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2008, 13h41   #5
Membre chevronné
 
Avatar de cadoudal56
 
Inscription : février 2005
Messages : 671
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : février 2005
Messages : 671
Points : 646
Points : 646
Citation:
Personnellement je ne comprends pas pourquoi vous essayez de recoder du php dans un template smarty. Autant l'ecrire dans le fichier .php non ? parce que c'est la philosophie "smarty" : le tpl est là pour l'affichage pas pour repasser des variables a du php, (si ?? je me plante ?)
Je vais te donner un exemple assez simple car je suis dans le meme cas....

Prenons par exemple un site de football, tu as des pages diverses et variées comme des pages de joueurs, de stades, de competitions etc...

Disons que tu as un site en 3 bandes verticales. A gauche le menu, au centre les pages et a droite les extras-infos....

Dans les extra-infos, on va dire que tu peux mettre a peu pres n'importe quoi, mais que pour les pages competitions et seulement quand tu te trouve dans une page competition, tu affiches la table de classement de la competition consultées....

Comme tu n'as pas envie de gérer cette table de classement dans ton script, tu fais un petit script a part, qui ne renvoi que le tableau de la competition...
Comme cela tu ne pollue pas tous tes scripts avec ces extras-infos, et si tu ne veux plus de classement, tu vire l'include dans la template...

C'est pour cela que c'est utile de passer une variable d'un tpl à un PHP via un include...

@+
cadou
__________________
PHP Competition System
Script de gestion de coupes et championnats
http://phpcompet.free.fr

Mon jeu de foot
cadoudal56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h24.


 
 
 
 
Partenaires

Hébergement Web