Categories > TinyButStrong general (FR) >

Instancier TBS dans une fonction

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: Cemir
Date: 2009-05-24
Time: 03:04

Instancier TBS dans une fonction

Hello,

j'essaie d'instancier TBS dans une fonction affin de récuperer le resultat du merge en retour de la fonction.
Tbs me charge bien le template mais ne reconnait pas mes variables.

voici un exemple simplifié de mon code et ce que j'obtiens :

php :
<?php
      require 'tbs_class.php';

    function BuildMiddle(){
        $tata = "mon millieu";
       
        $TbsMid = new clsTinyButStrong;
        $TbsMid->LoadTemplate('/usr/cayac/www/testTBS/' . 'template2.tpl');
        $TbsMid->Show(TBS_NOTHING);
       
        return $TbsMid->Source;
    }

    //$toto = "var template 1";
    $toto = BuildMiddle();

    $TbsHead = new clsTinyButStrong;
    $TbsHead->LoadTemplate('/usr/cayac/www/testTBS/' . 'template1.tpl');
    $TbsHead->Show(TBS_NOTHING);
   
       
    echo $TbsHead->Source;

?>


template 1 :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<body style="background-color:gray;">
<div>[var.toto]</div>
</body>
</html>

template 2:
<div style="background-color:green;">
[var.tata; htmlconv=no]
</div>

résultat :


TinyButStrong Error in field [var.tata...] : the PHP global variable named 'tata' does not exist or is not set yet. This message can be cancelled using parameter 'noerr'.
<div style="background-color:green;">
[var.tata; htmlconv=no]
</div>


Help :)

Question subsidiaire :
pourquoi sous unix, suis-je oublier d'inclure le chemin complet de mes fichiers templates?

Merci d'avance,
Cemir
By: Skrol29
Date: 2009-05-25
Time: 09:25

Re: Instancier TBS dans une fonction

Salut Cemir,

Les champ [var] ne fusionne que des variables globales. Pas les variables locales à ta fonction. Il te suffit de faire un tableau PHP global de références vers tes variables locales pour les afficher dans le modèle.

Pour ton problème de chemin, ça n'est pas propre à TBS, mais ça doit venir de ta configuration PHP. TBS fait simple fopen() pour inclure le sous-modèle
By: Cemir
Date: 2009-06-12
Time: 17:11

Re: Instancier TBS dans une fonction

Hello,

merci pour ta réponse et désolé de ne pas répondre plus vite mais pas eu le temps de me replonger dans le problème.

pour le path ça venait de mon serveur web, sous le même environement mais avec apache comme websrv je n'ai pas le souci.

un tableau PHP global de références vers tes variables locales  :

càd?

Conceptuellement je ne seuis pas troup chaud pour déclarer mes varriables en global juste pour pouvoir les merger, ça risque de poser pas mal de soucis pour la suite.

Merci,
Cemir.
By: Skrol29
Date: 2009-06-12
Time: 18:12

Re: Instancier TBS dans une fonction

Exemple 1:

global $VarLoc;

$VarLoc['x'] = 123; // Se fusionne avec [var.VarLoc.x]
$VarLoc['y'] = 456; // Se fusionne avec [var.VarLoc.y]
$VarLoc['z'] = 789; // Se fusionne avec [var.VarLoc.z]
...
$TBS->Show();

$VarLoc = false; // pour supprimer les variables locales


Exemple 2:

global $VarLoc;

$VarLoc = new stdClass;
$VarLoc->x = 123; // Se fusionne avec [var.VarLoc.x]
$VarLoc->y = 456; // Se fusionne avec [var.VarLoc.y]
$VarLoc->z = 789; // Se fusionne avec [var.VarLoc.z]
...
$TBS->Show();

$VarLoc = false; // pour supprimer les variables locales

By: Cemir
Date: 2009-06-12
Time: 18:23

Re: Instancier TBS dans une fonction

Oki,

je vois un peut mieux le truc

Merci pour ton aide

Cemir