Version actuelle
0.8.4.2
 

Forums

Un problème, une idée d'amélioration ?
C'est ici que ça se passe !

You are not logged in.

Announcement

Suivez l'actualité du développement de Hyla sur son blog : http://blog.hyla-project.org/
  • Index
  •  » Aide
  •  » Utiliser un bloc plusieurs fois ?

#1 2010-06-25 01:22:39

faf2019
Membres
Registered: 2010-06-25
Posts: 2

Utiliser un bloc plusieurs fois ?

Bonjour,

j'utilise le moteur de template de phpBB2 (avec une version un peu ancienne de PHPLib) depuis un moment et il m'a rendu bien des services. Il est facile à mettre en oeuvre, léger, etc...

J'ai donc été attiré par la présentation de Hyla Tpl et j'essaye de me faire la main en migrant mon code de Phplib à Hyla Tpl et j'avoue que j'ai du mal à m'y retrouver.

J'ai peut être loupé quelque chose, mais il me semble que le système des blocs est limité à des itérations ou des conditions à usage unique.

Cependant j'ai l'habitude de déclarer des blocs conditionnels (une seule fois) que j'utilise plusieurs fois dans ma page car c'est très pratique au niveau du template.

Le cas le plus basique concerne par exemple un switch "utilisateur connecté" / "utilisateur déconnecté".
Dans PHPLib je déclare une seule fois le bloc $objTemplate->assign_block_vars('user_connected', array()); et je peux l'utiliser à plusieurs endroits dans le template.

Dans Hyla Tpl, je n'arrive pas à reproduire ce comportement.

La méthode render(); génère une seule fois le bloc :
$objTemplate->render('user_connecter');

C'est clair ? ^^

Last edited by faf2019 (2010-06-25 01:23:16)

Offline

 

#2 2010-06-25 16:40:48

hugo
Administrateur
Registered: 2007-04-10
Posts: 807

Re: Utiliser un bloc plusieurs fois ?

salut,

je ne connais pas la fonction assign_block_vars qui ne vient pas du moteur de tpl de la phplib mais bien du moteur de phpbb2.

j'ai pas compris ton probleme, sache que la methode render execute un rendu d'un block, si tu l'appelles plusieurs fois, tu auras autant de rendu que d'appel, c'est aussi simple que ça...

Attention, tu ne peux pas avoir plusieurs blocs ayant le meme nom dans un fichier de gabarit.

++

Offline

 

#3 2010-06-28 17:04:11

faf2019
Membres
Registered: 2010-06-25
Posts: 2

Re: Utiliser un bloc plusieurs fois ?

Merci pour ta réponse.

Je me doutais que l'énoncé de mon problème n'était pas très clair.

Je vais simplifier :

J'aimerai pouvoir déclarer un bloc une seule fois dans mon code et l'utiliser à plusieurs endroit dans mon TPL (je parle bien d'une bloc conditionnel et pas d'une itération) car je ne connais pas à l'avance la structure du TPL (c'est bien sûr l'intérêt).

Par exemple, quand un utilisateur se connecte sur mon appli, je lui affiche des éléments supplémentaires sur la page à plusieurs endroits.  J'ai donc besoin d'utiliser plusieurs fois (mais le nombre n'est pas connu à l'avance) le même bloc "utilisateur_connecté ? oui/non".

Et, sauf si je n'ai pas compris, je n'arrive pas à reproduire ce comportement avec Hyla.

Sinon, si je peux me permettre, je trouve bizarre de faire des rendus en cours d'exécution de page. Ce n'est pas l'idée que je me faisais d'un moteur de template.

Dans le (vieux) moteur que j'utilise actuellement, les variables et les blocs sont déclarés au cours de l'exécution du code php mais le rendu n'est appelé qu'une seule fois (en principe à la fin).

Ceci dit, il y a de nombreuses idées intéressantes dans ton moteur. C'est d'ailleurs pour cela que je me suis penché dessus wink

Offline

 

#4 2010-06-28 17:25:09

hugo
Administrateur
Registered: 2007-04-10
Posts: 807

Re: Utiliser un bloc plusieurs fois ?

faf2019 wrote:

J'aimerai pouvoir déclarer un bloc une seule fois dans mon code et l'utiliser à plusieurs endroit dans mon TPL (je parle bien d'une bloc conditionnel et pas d'une itération) car je ne connais pas à
l'avance la structure du TPL (c'est bien sûr l'intérêt).

là, déjà, je ne te suis plus car Hyla_Tpl ne possède pas de bloc conditionnel...
Il n'y a pas de <!-- IF xxxx -->
Hyla_tpl fonctionne uniquement avec ce que tu appelles des blocs itératif lié à un appel à render.

faf2019 wrote:

Par exemple, quand un utilisateur se connecte sur mon appli, je lui affiche des éléments supplémentaires sur la page à plusieurs endroits.  J'ai donc besoin d'utiliser plusieurs fois (mais le nombre n'est pas connu à l'avance) le même bloc "utilisateur_connecté ? oui/non".

Et, sauf si je n'ai pas compris, je n'arrive pas à reproduire ce comportement avec Hyla.

Tu fais un bloc de ce genre là :

Code:

<!-- BEGIN auth -->
  Coucou
<!-- END auth -->

{$auth_content}
{$auth_content}
{$auth_content}

Dans ton code php, tu fais ceci :

Code:

$auth_content = $tpl->render('auth');
$tpl->setVar('auth_content', $auth_content);

faf2019 wrote:

Sinon, si je peux me permettre, je trouve bizarre de faire des rendus en cours d'exécution de page. Ce n'est pas l'idée que je me faisais d'un moteur de template.

Dans le (vieux) moteur que j'utilise actuellement, les variables et les blocs sont déclarés au cours de l'exécution du code php mais le rendu n'est appelé qu'une seule fois (en principe à la fin).

La fonction s'appelle render car elle exécute un rendu du bloc courant mais en aucun cas, quoique ce soit n'est  envoyé au navigateur, sauf, si tu fais un echo $tpl->render
c'est toi qui fait ce que tu veux du render.

Render est en quelque sorte l'équivalent du parse.

Offline

 
  • Index
  •  » Aide
  •  » Utiliser un bloc plusieurs fois ?

Board footer

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson