GAGA Template

XLetter

[Résolu] Erreur ligne 204, Non-static method gagatemplate::parse_include_callback()

Je sais pas trop si c'est vraiment un erreur du script

Sujet résolu

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

Page : 1
ricici123 Posté le 01/01/2008 16:30 - #

Membre
4 messages
Bonjour,

Les gagatemplates me produisent l'erreur suivante : Non-static method gagatemplate:: parse_include_callback() cannot be called statically, assuming $this from compatible context gagatemplate

A la ligne n°204.

Elle se produit avec le script suivant :
$tpl->assign(array('title' => 'all-lifes',
'contenu' => 'test'));;
$tpl->parse('index.tpl');

(Le moteur de script a été instancié plus haut dans le script)

Et le code de template suivant :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
       <title>{title}</title>
       <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
       <script type="text/javascript" src="libs_ajax/function_base.js"></script>
   </head>
   <body>
{contenu}
</body>
</html>


Merci de votre lecture et de votre aide potentiel

[Edit] L'erreur se produite avec la version 4

Edité par ricici123 le 02/01/2008 12:40

gaga26 Posté le 01/01/2008 17:06 - #



741 messages
18 ans
Salut,

Pourrait-on avoir le code complet de ta page, parce là comme ça je vois pas vraiment...

ricici123 Posté le 01/01/2008 17:43 - #

Membre
4 messages
D'accord les voilà, j'ai mis les fichiers tel qu'ils vont être utilisé.

Le fichiers index.php
<?php
session_start();

if(isset($_GET['page']))
{
        if($_GET['page'] != 'forum' AND $_GET['page'] != 'mp' AND $_GET['page'] != 'jeu' )
        {
                echo 'Tentative de hack détécté, votre adresse ip a été enregistrer';
                //mettre un méthode pour enregistrer l'ip
                exit();
                }
        }


//Fichiers du moteur de template
include_once('libs/gaga.class.php');
$tpl = new gagatemplate();

//Fichiers de configuraison :
include_once('conf/configuration.php');

//Fichers des différentes fonctions (utilise uniquement pour le forum et les mp)
if($_GET['page'] == 'forum' OR $_GET['page'] == 'mp')
{
        include_once('function/function_mysql.php');
        include_once('function/erreur.php');
        include_once('function/utilitaires.php');
        include_once('function/hack.php');
        include_once('function/mp.php');
        }

//Fichiers du noyau (utilise uniqement pour le jeu en lui même)
if($_GET['page'] == 'jeu')
{
        include_once('noyau/noyau.php');
        }

if($_GET['page'] == 'forum' OR $_GET['page'] == 'mp')
{
        connection_mysql($hote, $login, $mot_de_pase, $base_de_donne);
        set_error_handler('erreur');
        include_once($_GET['page'].'.php');
        mysql_close();
        $tpl->clean_compile_dir();
        $tpl->assign(array('title' => 'all-lifes',
        'contenu' => $contenu));;
        $tpl->parse('index.tpl');
        }
else
{
    echo 'Voulez-vous aller au <a href="index.php?page=forum">forum</a> ou aux <a href="index.php?page=mp">mp</a> ?';
    }
?>


Qui parse le fichiers index.tpl
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
       <title>{title}</title>
       <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
       <script type="text/javascript" src="libs_ajax/function_base.js"></script>
   </head>
   <body>
{contenu}
</body>
</html>


Je fait les test avec le fichiers mp.php et l'action : lire_index
Donc on retrouve le fichiers mp.php
<?php
function parseur_mp($action, $message, $racine_site)
{
        if($action == 'lire_index')
        {
                $occurence = count($message);
                $tpl1 = new gagatemplate();
                $occurence--;
                $a = 0;
                while($a<$occurence)
                {
                        $tpl1->assign_array('message', array('titre' => $message[$a]['titre'],
                        'lu' => $message[$a]['lu'],
                        'auteur' => $message[$a]['auteur_mp'],
                        'date' => $message[$a]['date'],
                        'auteur_dernier_message' => $message[$a]['auteur_dernier_message'],
                        'date_dernier_message' => $message[$a]['date_dernier_message']) );
                        $b = 0;
                        while($b<$message[$a]['nombre_participant'])
                        {
                                $tpl1->assign_array('message.participant', array('lu_participant' => $message[$a]['participant']['lu'][$b],
                                'participant' => $message[$a]['participant']['nom'][$b]) );
                                $b++;
                                }
                        $a++;
                        }
               
                $page = explode(',', $message['numero_page']);
                $nombre_page = count($page);
                $c = 0;
                while($c<$nombre_page)
                {
                        $tpl1->assign_array('numero_page', array('racine_site' => $racine_site,
                        'numero_page' => $page[$c] ));
                        $c++;
                        }
                ob_start();
                $tpl1->parse('mp/lire_index.tpl');
                $contenu = ob_get_contents();
                ob_end_clean();
                }
        return $contenu;
        }
?>


Qui parse le fichiers
<table>
<thead>
<tr>
        <th>Titre du message</th>
        <th>Auteur</th>
        <th>Date</th>
        <th>Participant</th>
        <th>Dernier message</th>
</tr>
</thead>
<foreach var="$message" as="message">
<tr>
        <td>{message[titre]}</td>
        <td><if cond="$message[lu] == 0"><span class='rouge'>{message[auteur]}</span><else>{message[auteur]}</if></td>
        <td>{message[date]}</td>
        <td><foreach var="$message[participant]" as="participant">
                <li><if cond="$participant[lu_participant] == 0"><span class='rouge'>{participant[participant]}</span><else>{participant[participant]}</if></li>
                </foreach>
                </td>
        <td><span class='centrer'>{message[auteur_dernier_message]}<br/>{message[date_dernier_message]}</span></td>
</tr>
</foreach>
</table>
<p>
<foreach var="$numero_page" as="page">
<a href='{page[racine_site]}index.php?page=mp&action=lire_index&mode=classique&numero_page={page[numero_page]}'>{page[numero_page]}</a>
</foreach>
 


Le lien entre index.php et mp.php est fait pas un autre fichiers index.php
include_once('scripts/mp/'.$_GET['action'].'.php');

if($_GET['mode'] == 'ajax')
{
        header("Content-type: text/xml");
        echo '<?xml version="1.0" encoding="iso-8859-1"?>';
        echo $reponse;
        echo '</xml>';
        }
elseif($_GET['mode'] == 'classique')
{
        $contenu = parseur_mp($_GET['action'], $message, $racine_site)
        }


La variable $message étant généré par un fichiers lire_index.php mais il n'entre en rien dans la gestion des templates.

gaga26 Posté le 01/01/2008 18:29 - #



741 messages
18 ans
Je ne vois pas pourquoi tu redéclare la class dans ta fonction parseur_mp, il serait préférable de réutiliser la varible $tpl.

ricici123 Posté le 01/01/2008 18:51 - #

Membre
4 messages
Sa ne résout malheureusement pas le problème.

[Edit] en commentant la ligne n°204, le bug disparaît et la page s'affiche correctement, mais je trouve cette méthode un peu kurde je trouve.

Edité par ricici123 le 01/01/2008 19:01

gaga26 Posté le 01/01/2008 19:05 - #



741 messages
18 ans
essai de mettre le mot static devant.
private static function ...

ricici123 Posté le 01/01/2008 20:20 - #

Membre
4 messages
Il me dit maintenant :
Fatal error: Using $this when not in object context in /home/romain/Serveur/All-lifes/Forum-alpha-0.0/libs/gaga.class.php on line 204

Mais en utilisant le mot static à la ligne 209 comme ceci :
private static function parse_include_callback($m){


Sa marche !!!

maxima Posté le 11/02/2008 21:56 - #


Membre
5 messages
16 ans
<?php
        if($_GET['page'] != 'forum' AND $_GET['page'] != 'mp' AND $_GET['page'] != 'jeu' )
        {
                echo 'Tentative de hack détécté, votre adresse ip a été enregistrer';
               //mettre un méthode pour enregistrer l'ip
                exit();
                }
        }
?>


le gars qui déteste les hackeurs je deconne

Edité par maxima le 11/02/2008 21:57

magik-orion Posté le 12/02/2008 18:58 - #


Membre
49 messages
18 ans
Bonjour à tous !
Je viens d'installer la version 4.0 et j'ai eu le même problème.
J'ai donc ajouter le mot static et tout a bien fonctionné.
Merci

Page : 1

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

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