Je vous expose mon problème :
Au départ j'ai un fichier .tpl qui contient du html, du contenu et des variables (je sais pas si le terme est juste donc je dirais du 'code Smarty').
Ce fichier .tpl est affiché depuis mon fichier .php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 page.tpl <div> <span>Bonjour</span> <p>Bonjour, {$personne.type} {$personne.Nom}</p> <span>Question 1</span> <p>Quel est votre age {$personne.type} {$personne.Nom}?</p> </div>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 fichier.php // $personnes ( est un array() ) $SM->assign('personnes',$personnes); $SM->display($DTemplate.'page.tpl');
La ou est survenue le problème c'est que j'ai voulu permettre aux utilisateurs de modifier le contenu (donc le texte) via une partie admin du site.
Il devait pouvoir modifier le contenu, mais conserver les balises ou code Smarty permettant de récupérer les valeurs.
Côté BDD :
Côté PHP :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Enregistrement 1: 'titre' : "Bonjour" 'contenu' : "Bonjour, {$personne.type} {$personne.Nom}" Enregistrement 2: 'titre' : "Question 1" 'contenu' : "Quel est votre age {$personne.type} {$personne.Nom}?"
Côté Smarty :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 fichier.php // $data contient les infos de la bdd via PDO::FETCH_OBJ $SM->assign('data', $data ); $SM->assign('personnes',$personnes); $SM->display($DTemplate.'page.tpl');
Le problème qui se pose est que les information data sont bien interprété, mais les balises et le code Smarty eux ne le sont pas, j'obtenais que chose du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 page.tpl <div> {foreach from=$data item=un} <span>{$un->titre}</span> <p>{$un->contenu}</p> {/foreach} </div>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 affichage html <div> <span>Bonjour</span> <p>Bonjour, {$personne.type} {$personne.Nom}</p> <span>Question 1</span> <p>Quel est votre age {$personne.type} {$personne.Nom}?</p> </div>
Le problème est que la string $un->contenu (qui contient du code Smarty) n'est pas interprété.
Partager