Categories > TinyButStrong general (FR) >

[POO] inclusion d'un "sous-tempate" par une méthode objet

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: Eldarion
Date: 2006-08-06
Time: 22:58

[POO] inclusion d'un "sous-tempate" par une méthode objet

Bonjour,

Je souhaite pouvoir inclure des "sous-templates" d'une autre façon que les subtpl=... qui nécessitent des controleurs graphiques indépendants ( ça fonctionne très bien mais impossible de les faire interragir dans une architecture 3-tiers avec controleurs graphiques multiples ).


Dans le manuel il existe la possibilité d'utiliser des méthodes, ex :
[var.~item2.propA]             $TBS->ObjectRef['item2']->propA

j'ai donc essayé (pour simplifier) ceci dans mon template :
<body>
[var.~this.output_body;htmlconv=no]
</body>

en ayant au préalable déclaré coté controleur ceci :
$output->ObjectRef['this'] =& $this;
$this possède une méthode output_body qui instancie un controleur graphique particulier.

ça ne pond aucune erreur, mais le problème c'est que je ne retrouve que le sous-template affiché, et non le template prinicpal avec celui-ci imbriqué.


voilà donc ma question :
est-il possible dans TBS de pouvoir utiliser une méthode d'objet pour instancier un objet tbs et lui faire afficher un tempate à l'intérieur d'un autre ?

désolé j'ai pas trouvé plus tordu, la raison de tout ça est un portage d'architecture 3-tiers basé sur le moteur de template Flexy vers TBS pour un projet de petite taille.

merci de vos réponses et chapeau bas pour le taff que vous fournissez ;-)
By: Skrol29
Date: 2006-08-07
Time: 03:15

Re: [POO] inclusion d'un "sous-tempate" par une méthode objet

Salut,

Si ton champ [var.~this...] affiche le sous-modèle dirctement c'est probablement parce que ta méthode output_body() fait une sortie console (un echo quoi) au lieu de retourner le contenu sous forme de chaîne. Si ton contrôleur est bien fait, il devrait déjà intégrer la posibilité de retourner l'affichage sous forme de chaîne grâce à une option.

Tu peux aussi contourner ce problème en faisant une méthode qui capture l'affichage au lieu de le sortir grâce à ob_start() et ob_get_contents(). C'est exactement de que fait le mode sous-modèle de TBS (paramètre subtpl).

Le truc que tu demandes par la suite est possible, mais ça revient à demander à TBS de fournir des méthodes pour gérer la capture de sortie console. Mais ce n'est pas tellement  à lui de faire ça en fait. Les autres aspects de gestion de sous-modèle par une autre instance (ou par la même instance) sont déjà dispo dans TBS.
By: Eldarion
Date: 2006-08-07
Time: 14:17

Re: [POO] inclusion d'un "sous-tempate" par une méthode objet

merci pour ces idées, je les testerais ce soir :)

en fait la méthode output_body instanciait une classe TBS, mergeait des blocs puis faisait un Show() classique, un echo en effet !
pour capturer l'affichage il y a la propriété TBS_NOTHING je crois bien, puis avec la propriété Source on peut récupérer l'html ?

bref je teste ça, puis je pense rendre les sources du bidule disponible à tous au cas où ça puisse aider ;-)
By: Eldarion
Date: 2006-08-07
Time: 22:48

Re: [POO] inclusion d'un "sous-tempate" par une méthode objet

ça marche bien, merci du coup de pouce !!