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

Langage PHP Discussion :

[POO] problème pour gérer des variables inclues dans des templates


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 219
    Points : 66
    Points
    66
    Par défaut [POO] problème pour gérer des variables inclues dans des templates
    Bonjour, j'ai écris un petit code permettant de gérer des templates en php4 avec des objets. Les templates sont correctement placés mais je rencontre des soucis pour intégrer des variables à l'intérieur de ces templates. J'ai testé deux méthodes:

    -la première:

    Code class_tpl.php : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    26
    class template
    {
    	var $name;
    	var $folder;
    	var $tpl;
     
    	function template ($folder)
    	{
    		$this->name = '';
    		$this->folder = $folder."/tpl/";
    		$this->tpl = '';
    	}
     
    	function get ($tplname)
    	{
    		if (!empty ($tplname))	$this->name = $tplname.'.tpl';
    		$this->tpl = $this->folder.$this->name;
    		if (file_exists ($this->tpl))
    		{
    			$temp = fopen ($this->tpl, "r");
    			$this->tpl = fread ($temp, filesize ($this->tpl));
    			print $this->tpl;
    		}
    		else echo 'le template '.$this->tpl.' n\' existe pas!';
    	}
    };

    Code index.php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    include 'include/config.php';
     
    $pagetitle = 'index';
     
    $tpl->get ('header');

    Code header.tpl : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <head>
    		<title><?php echo $pagetitle ?></title>
    	</head>

    Ce qui donne pour résultat dans le titre de la page web: "<?php echo $pagetitle ?>"

    -deuxième méthode: fonction include à la place de fopen:

    Code class_tpl.php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    class template
    {
    	var $name;
    	var $folder;
    	var $tpl;
     
    	function template ($folder)
    	{
    		$this->name = '';
    		$this->folder = $folder."/tpl/";
    		$this->tpl = '';
    	}
     
    	function get ($tplname)
    	{
    		if (!empty ($tplname))	$this->name = $tplname.'.tpl';
    		$this->tpl = $this->folder.$this->name;
    		if (file_exists ($this->tpl))
    		{
    			include $this->tpl;
    		}
    		else echo 'le template '.$this->tpl.' n\' existe pas!';
    	}
    };

    Ce qui donne pour résultat dans le titre de la page web: "notice: undefined variable..."

    Auriez vous une idée?

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    Bonjour,

    Dans la mesure où la variable $pagetitle n'est pas déclarée dans le scope de la méthode get, c'est normal qu'une telle erreur se produise.

    Soit, tu définis cette variable comme membre de la classe template, et donc tu pourra y accéder dans ton template via $this->pagetitle.
    Ou alors, pour chaque template tu l'accompagnes d'un fichier d'init, qui sera inclus avant le template à proprement parlé et qui aura pour tâche d'initaliser les variables utiliser dans le template.

    Par rapport au problème dont tu fais part, la première solution me semble la plus interessante, car on peut se laisser penser que 95% de tes templates auront besoin d'un titre de page.

    Maintenant un fichier d'init me parait necessaire. Ne serait ce que pour gérer un formulaire.

    bye

  3. #3
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 219
    Points : 66
    Points
    66
    Par défaut
    Salut, d'abord merci pour ton aide. Je ne connais pas ce concept de fichier d'init en php, tu sais où je peux trouver de la doc? Et dans le cas d'un script de news par exemple, mes templates devront accueillir au moins une dizaine de variables différentes, ça risque pas d'être un peu foireux?

  4. #4
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut
    Mithrendil.... De mondespersistants.com, t'es le même ?

  5. #5
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 219
    Points : 66
    Points
    66
    Par défaut
    ah non je connais pas ce site désolé.

Discussions similaires

  1. Recuperer dans des variables le contenu des indices d' un tableau
    Par integrale dans le forum Général Python
    Réponses: 2
    Dernier message: 06/04/2013, 14h53
  2. Réponses: 5
    Dernier message: 09/09/2011, 23h07
  3. Réponses: 4
    Dernier message: 03/06/2011, 08h20
  4. utiliser des variables contenues dans des boucles While
    Par Fbertran-pro dans le forum LabVIEW
    Réponses: 1
    Dernier message: 18/02/2011, 00h32
  5. Récupérer des données javascript dans des variables php
    Par TigerWolf dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 25/06/2007, 10h03

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