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 15/02/2008, 18h35   #1
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 160
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 160
Points : 34
Points : 34
Par défaut Transmission avec Smarty

Bonjour,

J'utilise le système de template Smarty, j'ai une liste à faire, j'aimerais passer des valeurs au template style id, titre ... et dans le tpl mettre exemple :

Code :
1
2
3
4
5
 
<div>
     <p>{$titre}</p>
     <a href="test.php?id={$id}">test</a>
</div>
Mais je ne sais pas comment faire côté php, actuellement je met tout dans un while exemple :

Code :
1
2
3
4
5
6
7
8
9
10
 
$liste = "";
 
while($test .....)
{
     $liste .= "<div>";
     $liste .= "<p>".$test['titre']."</p>";
     $liste .= '<a href="test.php?id='.$test['id'].'">test</a>';
     $liste .= '</div>';
}
Euh je met dans le tpl "{$liste}"

Merci
iwf-fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2008, 21h40   #2
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur intégration
Inscription : décembre 2004
Messages : 683
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 683
Points : 1 294
Points : 1 294
Hello,

Il faut que tu regarde du côté des tableaux...

http://eric-pommereau.developpez.com...=page_3#LIII-B

@++
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2008, 12h02   #3
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 160
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 160
Points : 34
Points : 34
Ok mais comment je fais passer dans les tableaux avec mon while() ?
iwf-fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2008, 20h00   #4
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur intégration
Inscription : décembre 2004
Messages : 683
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 683
Points : 1 294
Points : 1 294
Bonjour,

En fait dans le fichier Php tu "passes" les données à Smarty avec la méthode assign(), par exemple :

Code :
$oSmarty->assign('liste', $liste);
Ton exemple (de while) n'est pas pertinent dans la mesure où smarty est fait pour séparer la présentation des données.

Pour en revenir à ton exemple :

Code :
1
2
3
4
5
6
7
8
9
10
 
$liste = "";
 
while($test .....)
{
     $liste .= "<div>";
     $liste .= "<p>".$test['titre']."</p>";
     $liste .= '<a href="test.php?id='.$test['id'].'">test</a>';
     $liste .= '</div>';
}
Il faudrait mettre le html dans le template et produire les données (titre, contenu du href ...) dans le fichier Php, genre :

PHP :


Code :
1
2
3
4
5
6
7
8
require_once('../libs/Smarty.class.php');
 
$oSmarty = new Smarty();
 
$oSmarty->assign('titre', 'Mon titre');
$oSmarty->assign('id', 234);
 
$oSmarty->display();
LE TEMPLATE :

Code :
1
2
3
4
<div>
	<p>{$titre}</p>
	<a href="test.php?id={$id}">test</a>
</div>
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2008, 09h37   #5
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 160
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 160
Points : 34
Points : 34
Oui mais comment je fais pour un while() comme dans mon exemple ?
iwf-fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2008, 10h01   #6
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur intégration
Inscription : décembre 2004
Messages : 683
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 683
Points : 1 294
Points : 1 294
Un exemple similaire à ce que tu veux faire :

Php :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
require_once('../lib_smarty/Smarty.class.php');
 
$oSmarty = new Smarty();
 
$mysql_ressource = mysql_connect('localhost', 'root', '');
 
mysql_select_db("training", $mysql_ressource);
 
$sQuery = "SELECT PSN_FIRST_NAME, PSN_LAST_NAME, PSN_PHONE FROM person ORDER BY PSN_LAST_NAME";
 
$mysql_rs = mysql_query($sQuery, $mysql_ressource) or die(mysql_error());
 
$aRecordSet = array();
 
while ($aRow = mysql_fetch_array($mysql_rs)) {
	array_push($aRecordSet, $aRow);
}
 
$oSmarty->assign('smarty_table_mysql', $aRecordSet);
 
$oSmarty->display('index.tpl');
Le TPL :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
	<head>
	<title></title>
	</head>
	<body>
		<table width="450px">
			<tr style="background-color:teal;color:white;">
				<th>NOM</th>
				<th>PRENOM</th>
				<th>TELEPHONE</th>
			</tr>
			<!-- Pour chaque élément du tableau $smarty_table_mysql -->
			{section name=idx loop=$smarty_table_mysql}
				<tr style="background-color:{cycle values="#ffffcc, #cccccc"};">
					<td>{$smarty_table_mysql[idx].PSN_LAST_NAME}</td>
					<td>{$smarty_table_mysql[idx].PSN_FIRST_NAME}</td>
					<td>{$smarty_table_mysql[idx].PSN_PHONE}</td>            
				</tr>   	
			{/section}
 
		</table>
	</body>
</html>
Dans le fichier PHp tu crées un tableau avec tes valeurs que tu passes au moteur de smarty.

Ensuite dans le tpl tu utilises soit un {section ...} soit un {foreach... } pour afficher les données du tableau.

@+
eric.pommereau 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 19h30.


 
 
 
 
Partenaires

Hébergement Web