[dev PHP] besoin d aide sur destroy_block_vars()

Ce forum vous servira à trouver de l'aide uniquement en ce qui concerne le développement d'un de vos MODs, ou l'adaptation d'un MOD phpBB2 pour phpBB3.

Modérateur: Equipe

[dev PHP] besoin d aide sur destroy_block_vars()

Messagepar mooztik » 18 Aoû 2010 à 11:56

bonjour,

j ai besoin d'un éclaircissement sur le fonctionnement de la fonction $template->destroy_block_vars().
j ai eu beau chercher sur le forum phpBB officiel, sur le forum de developpement area51, et meme ici, je ne trouve pas la solution...

j ai suivi la doc de cette adresse :
documentation-phpbb3/sujet154167.html#p1178214
ainsi que la doc précédente.

mon probleme se situe sur le fait que certains de mes blocs sont utilisés plusieurs fois dans une même page, mais avec des variables différentes.
que ce soit mon code actuel ou l exemple donné sur phpbb-fr (çi dessus), si on reutilise un meme script (par exemple list_users) , le moteur de template cumule le contenu à chaque rappel du script.

dans le cas de list_users, la liste se cumule a chaque appel. donc si j appelle 3 fois le script, le premier rendu sera normal, le second contiendra le resultat du 1 rendu + le resultat du second, et le 3eme contiendra le contenu du 1er 2eme et 3 eme rendu.

par l exemple c est plus simple :)
j ai repris le code de : documentation-phpbb3/sujet154167.html#p1178213

les modifications: (pour des questions de praticité personnelle, j ai placé ces scripts dans un dossier '/_tests/' de phpBB)

test.php
Code: Tout sélectionner
    <?php
    define('IN_PHPBB', true);
    $phpbb_root_path =  '../';
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    include($phpbb_root_path . 'common.' . $phpEx);
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup();

    page_header();
    $template->set_filenames(array('body' => 'test_body.html'));
    include($phpbb_root_path.'_tests/welcome.'.$phpEx);
    include($phpbb_root_path.'_tests/users.'.$phpEx);
   
   tst_users('BLOC2');
   tst_welcome('BLOC1');
   tst_users('BLOC4');
   
    page_footer();
    ?>


users.php
Code: Tout sélectionner
    <?php
    if (!defined('IN_PHPBB'))
    {
       exit;
    }

function tst_users($bloc)
{
    global $user, $template, $db;
   
   $template->set_filenames(array('list_users' => 'test_users.html'));
    $sql = 'SELECT username FROM ' . USERS_TABLE . '
          ORDER by username ASC LIMIT 0,10';
    $result = $db->sql_query($sql);
    while($row = $db->sql_fetchrow($result))
    {
       $template->assign_block_vars('row', array(
          'USERNAME'    => $row['username']
       ));
    }

    $template->assign_display('list_users', $bloc, false);

$template->destroy_block_vars('row');
}
    ?>


welcome.php
Code: Tout sélectionner
    <?php
    if (!defined('IN_PHPBB'))
    {
       exit;
    }
   
function tst_welcome($bloc)
{
   global $user, $template;
   
   $username = $user->data['username'];
    $template->set_filenames(array('welcome' => 'test_welcome.html'));
    $template->assign_vars(array(
       'PSEUDO'    => $username,
    ));
    $template->assign_display('welcome', $bloc, false);
}
    ?>


a ce stade je supprime le template 'row' et ça fonctionne.

mais mon script actuel ne peu connaitre le(s) block_vars qui sont utilisés dans les scripts appelés.

et la je galère depuis plusieurs jours.

si une bonne ame pouvait m aider .
merci par avance.
mooztik
Posteur néophyte
Posteur néophyte
 
Messages: 2
Inscription: 18 Aoû 2010 à 11:18

Re: [dev PHP] besoin d aide sur destroy_block_vars()

Messagepar mooztik » 19 Aoû 2010 à 21:09

bon, je ne trouve pas de solution telle que je souhaite. donc temporairement, je règle mon problème en créant une variable présente dans le script de chaque bloc ayant pour mission de lister l'ensemble des block_vars utilisés pour pouvoir les vider une fois le contenu assigné au template général, et donc avant sa réutilisation.

donc si quelqu'un à une meilleure solution, je suis preneur.
mooztik
Posteur néophyte
Posteur néophyte
 
Messages: 2
Inscription: 18 Aoû 2010 à 11:18


Retourner vers Aide au développement

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

Partenaires : phpBBHacks.com • phpBB-Seo.com • EzCom-fr.com • phpBB3 Styles • phpBB podpora • phpBB Portugal    Liens : Net Avenir • PromoBenef • Ticket Gagnant