IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[Smarty] Smarty template de template


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Points : 28
    Points
    28
    Par défaut [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 : 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é.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Points : 28
    Points
    28
    Par défaut
    Comment résoudre ce problème?

    Une première solution serait :
    A l'enregistrement en BDD du titre et du contenu, écrire en même temps le contenu dans le fichier page.tpl.
    pour obtenir un fichier comme au début, du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <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>
    on sortirait alors toute la panoplie de fonctions php pour les ficheirs (fopen, fwrite... fclose).


    Cela fonctionnerait, mais alors on mélangerais php & html.




    La deuxième solution serait :

    De continuer sur notre lancé.


    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é SMARTY : page.tpl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <div>
      {foreach from=$data item=un}
          <span>{$un->titre}</span>		
          <p>{$un->contenu}</p>
      {/foreach}
    </div>
    Côté PHP : fichier.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // $data contient les infos de la bdd via PDO::FETCH_OBJ
    // on assigne les données à notre template
    $SM->assign('data', $data );
    // mais on ne l'affiche pas, on le récupère dans une variable
    $content = $SM->fetch($DTemplate.'page.tpl');
     
    // ensuite on assigne ce contenu (qui est interprété par Smarty)à un autre template qui lui va se charger d'interpréter les variables $personnes.
    $SM->assign('content',$content);
    $SM->assign('personnes',$personnes);
    $SM->display($DTemplate.'autre_page.tpl');

    Côté SMARTY : autre_page.tpl

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Smarty] Système Smarty Template
    Par yassineelouardi dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 01/12/2010, 10h47
  2. [Smarty] Quel moteur de template utiliser?
    Par zzman dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 17/06/2006, 18h29
  3. [Smarty] Moteurs de templates et ralentissement?
    Par Danny Blue dans le forum Bibliothèques et frameworks
    Réponses: 11
    Dernier message: 16/06/2006, 14h49
  4. [Smarty] Inclusion de templates
    Par pendragon509 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 11/10/2005, 19h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo