[Smarty] Smarty template de template
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:
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:
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:
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:
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:
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:
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é.