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').
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>
Ce fichier .tpl est affiché depuis mon fichier .php :
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 :
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é PHP :
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');
Côté Smarty :
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>
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
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é.