GAGA Template

XLetter

Le parsage ne s'effectue pas ! :(

Sujet résolu

Vous devez être inscrit et connecté pour pouvoir écrire dans les forums

Page : 1
vistuo Posté le 03/08/2007 10:18 - #


Membre
22 messages
16 ans
Bonjour à tous,
je suis sur un projet de forum, mais voilà, il se trouve que depuis ce matin, le parsage de certaine vars ne veut plus fonctionner...
Comme c'est une grande page, j'aifait une page de teste y ressemblant mais reduite (mais le bug persiste !)

Voici le code PHP :
$cat = array(
        array(
                'nom'=>'Cat',
                'sous_cat'=>array()
        ),
        array(
                'nom'=>'Cat',
                'sous_cat'=>array(
                        array(
                                'id'=>3,
                                'nom'=>'Forum',
                                'descrip'=>'Ceci est un forum',
                                'dern_mess'=>array(
                                        0,
                                        '',
                                        0
                                )
                        ),
                       
                        array(
                                'id'=>4,
                                'nom'=>'Forum',
                                'descrip'=>'Ceci est un forum',
                                'dern_mess'=>array(
                                        2,
                                        'pseudo',
                                        1184569454
                                )
                        ),
                       
                )
        )
);

foreach($cat as $cle => $val) {
        $tpl->assign_block('cat', array('id' => $cle+1, 'nom' => $cat[$cle]['nom']));
        if(count($val['sous_cat'])>0) {
                foreach($val['sous_cat'] as $val1) {
                        $tpl->assign_block('cat.sous_cat', array('id' => $val1['id'],'nom' => $val1['nom'], 'descrip' => $val1['descrip'], 'dern_mess_id'=>$val1['dern_mess'][0], 'dern_mess_pseudo'=>$val1['dern_mess'][1], 'dern_mess_time'=>$val1['dern_mess'][2]));
                }
        }
        else $tpl->assign_block('cat.sous_cat',array('id'=>NULL));
}


Voici le code TPL:
<!-- BEGIN cat -->
<tr>
<td colspan="2">
<a href="cat-{$id}.html">{$nom}</a>
</td>
</tr>

<!-- BEGIN cat.sous_cat -->
{if($id==NULL)}
<tr>
<td colspan="2">Pas de forums</td>
</tr>
{else}
<tr>
<td>
<a href="forum-{$id}.html">{$nom}</a>
<span class="description"> {$descrip} </span>
</td>
<td> {$dern_mess_id}, {$dern_mess_time}, par {$dern_mess_pseudo} </td>
</tr>
{/if}
<!-- END cat.sous_cat -->
<!-- END cat -->


Et le fichier compilé :
<?php if(!empty($this->blocks["cat"]) ){ foreach($this->blocks["cat"] as $g_b_var){ ?>
<tr>
<td colspan="2">
<a href="cat-<?php echo $g_b_var["id"]; ?>.html"><?php echo $g_b_var["nom"]; ?></a>
</td>
</tr>

<?php if(!empty($g_b_var["sous_cat"]) ){ foreach($g_b_var["sous_cat"] as $g_b_var){ ?>
<?php if($g_b_var["id"]==NULL){ ?>
<tr>
<td colspan="2">Pas de forums</td>
</tr>
<?php }else{ ?>
<tr>
<td>
<a href="forum-<?php echo $g_b_var["id"]; ?>
.html"><?php echo $g_b_var["nom"]; ?></a>
<span class="description"> {$descrip} </span>
</td>
<td> {$dern_mess_id}, {$dern_mess_time},par {$dern_mess_pseudo}<?php } ?></td>
</tr>
<?php } ?>
<?php }} ?>
<?php }} ?>


Sa fonctionne pas !
J'ai essayé plein de chose (sauf la solution), mais a mon avis (j'ai surement tord), c'est le moteur qui possède un bug(mais tout petit hein !! )
Merci d'avance pour vos aides !

Amicalement

EDIT : En plus de cela, j'ai deux erreurs :
Notice: Undefined variable: sea in F:\Creations\Progress\XHTML-CSS\Forum v3\Templates\class\template.class.php on line 246

Notice: Undefined variable: rep in F:\Creations\Progress\XHTML-CSS\Forum v3\Templates\class\template.class.php on line 246

Edité par vistuo le 03/08/2007 10:23

Noix de Coco Posté le 03/08/2007 11:13 - #


Membre
36 messages
16 ans
Je ne vois pas d'où pourrai venir l'erreur ^^'.

T'as essayé de vider le fichier des compilés manuellement et d'actualiser ?
Vérifie également le cache est désactivé, et s'il le faut vide aussi le dossier du cache.

Et aussi, tu ferrais mieux de présenter tes assign_block avec des retours à la ligne pour chaque assignement, tu y verrai mieux .

Et je remarque également que tu n'as pas initialiser le premier block (cat), donc vérifie que tu as bien au moins une catégorie, ou initialise-le .

Lors de l'initialisation, tu dois également définir toutes tes variables .
En décorticant ton code je viens également de trouver la réponse à ton problème :
En initialisant la block 'cat.sous_cat', tu n'as initialiser qu'une variable : $id !
Et j'en déduis que tu n'as pas créé de sous catégorie, c'est pourquoi les vairbales ne se parsent pas (mis à part $id).

Bon c'est un post où j'ai réfléchi à voix haute, mais j'espère que ça t'aiderai à mieux repérer tes erreurs .

Code final (que je me suis permis de modifier et de commenter ) :

// On définit un boléen qui servira à savoir s'il y a au moins une catégorie
$uneCategorie = false;

// On liste les catégories
foreach($cat as $cle => $val) {
        $tpl->assign_block('cat', array(
                'id' => $cle+1,
                'nom' => $cat[$cle]['nom']));
               
        // S'il y a au moins une sous catégorie
        if(count($val['sous_cat'])>0) {
                // On définit les sous catégories
                foreach($val['sous_cat'] as $val1) {
                                $tpl->assign_block('cat.sous_cat', array(
                                        'id' => $val1['id'],
                                        'nom' => $val1['nom'],
                                        'descrip' => $val1['descrip'],
                                        'dern_mess_id' => $val1['dern_mess'][0],
                                        'dern_mess_pseudo' => $val1['dern_mess'][1],
                                        'dern_mess_time' => $val1['dern_mess'][2]));
                }
        }
        // Sinon on initialise le block et ses variables
        else {
                $tpl->assign_block('cat.sous_cat',array(
                        'id' => NULL,
                        'nom' => NULL,
                        'descrip' => NULL,
                        'dern_mess_id' => NULL,
                        'dern_mess_pseudo' => NULL,
                        'dern_mess_time' => NULL));
        }
       
        // On déclare qu'il y a au moins une catégorie
        $uneCategorie = true;
}

// S'il n'y a pas de catégorie
if (!uneCategorie)
{
        // On initialise le block et ses variables
        $tpl->assign_block('cat', array(
                'id' => NULL,
                'nom' => NULL));
}

Edité par Noix de Coco le 03/08/2007 11:14

vistuo Posté le 03/08/2007 11:54 - #


Membre
22 messages
16 ans
Merci sa marche, mais j'ai toujours les deux erreurs, a mon avis (en parlant a gaga26), tu as oublier de mettre ceci dans la fonction assign_vars :
$rep=$sea=array();

Allez a + et merci !

PS:En initialisant la block 'cat.sous_cat', tu n'as initialiser qu'une variable : $id !
Et j'en déduis que tu n'as pas créé de sous catégorie, c'est pourquoi les vairbales ne se parsent pas (mis à part $id).

FAUX, $nom a été parsé ! C'est à ne plus rien comprendre !

Bonne journée

Noix de Coco Posté le 03/08/2007 12:02 - #


Membre
36 messages
16 ans
Je ne sais pas, mais là ça doit venir d'une autre partie de ton code, essaye de voir, car gaga26 n'a rien oublier, moi je m'en sert et ça fonctionne super bien (version 3.0), donc l'erreur dois provenir de ton code qui engendre un problème dans sea et rep ^^.

De rien sinon .

gaga26 Posté le 03/08/2007 13:37 - #



741 messages
18 ans
Tu as bien mis la variables compile à true ?

vistuo Posté le 03/08/2007 17:03 - #


Membre
22 messages
16 ans
Bien sur

gaga26 Posté le 03/08/2007 17:21 - #



741 messages
18 ans
Utilises-tu une version récente ? Si oui, essai un var_dump($tpl->blocks) pour voir si les blocks sont bien déclarés.

De plus je ne vois pas d'où vienne ces notices, il n'y a pas de variables sea ni rep.

vistuo Posté le 03/08/2007 17:42 - #


Membre
22 messages
16 ans
J'utilise la version 3.2 et ces variables se trouve dans les fonctions parse_blocks et parse_vars

gaga26 Posté le 03/08/2007 18:49 - #



741 messages
18 ans
Mais que t'affiche var_dump($tpl->blocks) ?

vistuo Posté le 06/08/2007 11:15 - #


Membre
22 messages
16 ans
J'avais deja regardé tout etait bon !

Ze Thriller Posté le 12/08/2007 18:20 - #


Membre
105 messages
24 ans
J'ai l'impression que c'est la manifestation d'un des bugs que j'ai signalé pour la v3.2 à savoir que quand un bloc est analysé, les variables qui suivent sont potentiellement détruites.

Corrigé dans la future v3.3 ^^

Page : 1

Vous devez être inscrit et connecté pour pouvoir écrire dans les forums

Retour au forum Variables, à la liste des forums, ou au haut de page