Categories > TinyButStrong general (FR) >

Appel récursif à un template

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: Fabio
Date: 2010-04-01
Time: 16:53

Appel récursif à un template

Bonjour,

J'essaye de mettre au point une interface générique pour un outil de comparaison.
Mon IHM s'appuie sur des objets partageant des propriétés communes et pouvant être composés de sous-objets.
A partir de ces propriétés, il est théoriquement facile d'envisager des algorithmes récursifs permettant d'afficher un objet sans savoir exactement à l'avance comment il est fait.

Cette fonction par exemple appelle le template "block.html" pour afficher un attribut qui se révèle être un objet :
public function display($FieldName,&$CurrVal,&$CurrPrm,&$TBS){
    $TBS->LoadTemplate('block.html');
    if (is_object($this->get($CurrVal))){
        $value = $this->get($CurrVal);
        $TBS->MergeBlock('champs',$value->getFieldsToCompare());
        $TBS->ObjectRef['objet'] =& $this->get($CurrVal);
        $TBS->Show();
    }

Le block.html pourrait ressembler à ça :
[var.~objet.getLibelle]
<ul>
    [champs;block=begin]
    <li>[champs.val;if [var.~objet.isSimpleField([champs.val])];then [var.~objet.get([champs.val])];else [champs.val;onformat=~objet.display();subtpl]]</li>
    [champs;block=end]
</ul>

On voit bien que si le champ n'est pas un objet, on appelle de manière récursive la méthode display, qui va à son tour afficher le template block ...

Le problème qui se pose, c'est que mes variables TBS ont toujours le même nom (objet et champs) et que forcément, TBS écrase leur valeur au fur et à mesure des appels ...

Je ne parviens pas à trouver un moyen pour contourner ce problème. Quelqu'un aurait-il déjà été confronté à ça ? Y a-t-il des subtilités TBS qui m'échappent et qui me permettraient de trouver une solution ?

Merci d'avance,
Fabrice.
By: Fabio
Date: 2010-04-01
Time: 16:57

Re: Appel récursif à un template

Bah désolé, j'aurais du commencer par lire le forum de manière plus attentive.

Ce post là se rapproche de mon problème :
http://www.tinybutstrong.com/forum.php?msg_id=10178#

Désolé encore pour la pollution;
Fabrice.