Categories > TinyButStrong general (FR) >

Récursivité

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: Caesar
Date: 2010-12-09
Time: 17:58

Récursivité

Salut,
Je n'ai pas trouvé comment faire fusionner un champ TBS dans un Champ TBS, je m'explique par ce simple exemple :


PHP
    $test = "[onshow..now;frm='dd/mm/yyyy']";
   
    $TBS = new clsTinyButStrong;
    $TBS->LoadTemplate('test.html');   
    $TBS->Show();   
TEMPLATE
    [onshow.test]

AFFICHAGE
    [onshow..now;frm='dd/mm/yyyy']

J'ai bien essayé le paramètre subtpl mais sans résultat ^^

By: Skrol29
Date: 2010-12-09
Time: 18:13

Re: Récursivité

salut,

Pour que ça marche, tu dois t'assurer de deux choses :
- que la fonction de protection de TBS est désactivé pour ce champ
- que le nouveau champ inséré sera traité par la suite

Dans ton exemple, il suffit de remplacer
[onshow.test]
par
[onload.test;protect=no]

Mais à part ça, c'est plutôt mal d'insérer un contenu de template directement via une chaîne PHP.
By: Caesar
Date: 2010-12-09
Time: 18:30

Re: Récursivité

^^ La j'ai pas vraiment d'autres choix le texte/template principal étant transmis depuis une application win32 par post.

Sinon j'avais déjà testé
$tbs->Protect = false;

Et comme avec le paramètre protect=no cela ne marche pas, je me retrouve tjrs avec comme affichage final

[onshow..now;frm='dd/mm/yyyy'] le champ n'est pas parsé
By: Caesar
Date: 2010-12-09
Time: 18:30

Re: Récursivité

au fait, merci pour ta réactivité
By: Skrol29
Date: 2010-12-10
Time: 00:30

Re: Récursivité

tu veux dire que la solution que je t'ai indiquée ne marche pas ?
By: Caesar
Date: 2010-12-10
Time: 10:22

Re: Récursivité

Oui cela ne fonctionne pas.

Aurais-tu une autre soluce ?
By: Caesar
Date: 2010-12-10
Time: 10:44

Re: Récursivité

J'ai trouvé c'est tout con finalement :

    $test = "[onshow..now;frm='dd/mm/yyyy';protect=no]";
   
    $TBS = new clsTinyButStrong;
    $TBS->LoadTemplate('test.html');   
    // Execution une premiere fois (sans affichage)
    $TBS->Show(TBS_NOTHING);   
    // Réexécution ($TBS->Source etant la source du template et le résultat apres fusion)
    // on relance pour fusionner les champs apparu avec la premiere fusion
    $TBS->Show();

Ne pas oublier d'enlever la protection (protect=no) sur les champs qui contiendront des champs de fusion