Call to a member function assign_var() on a non-object

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Einste1n
Mitglied
Beiträge: 520
Registriert: 09.06.2004 18:54

Call to a member function assign_var() on a non-object

Beitrag von Einste1n »

weiss einer was diese Fehlermeldung heißt ?

Fatal error: Call to a member function assign_var() on a non-object in

Ich programmiere gerade mit einen Kollegen einen kleinen mod, während er die Funktionen schreibt, versuche ich das ganze ins phpbb2 templetsystem zu setzen.

Bisher klappte das auch ganz gut, nur jetzt wird von der datenbank.php eine funktion.inc includet und in dieser hab ich

Code: Alles auswählen

print "Dieser Planet existiert noch nicht in unserer Datenbank! Du musst zuerst die Galaxieansicht einlesen!";
mit

Code: Alles auswählen

$template->assign_var('EINGABE', 'Dieser Planet existiert noch nicht in unserer Datenbank! Du musst zuerst die Galaxieansicht einlesen!');
ausgetauscht.
Allerdings kommt dabei diese Meldung

Fatal error: Call to a member function assign_var() on a non-object in C:\Programme\Webserver\xampp\htdocs\funktionen.inc on line 78

in der datenbank.php wird das templet natürlich voher geladen
mit

Code: Alles auswählen

$template->set_filenames(array( 
    'meine_seite' => 'datenbank.tpl', 
));
alle templets funktionieren, nur wenn in der funktion.inc diese bedingung aufgerufen wird, dann kommt diese meldung ... hat einer ne idee, wo der denkfehler liegt oder zumindest was diese fehlermeldung bedeutet ?
Das würde mich vieleicht etwas weiter bringen, weil im moment lerne ich gerade erst mit php umzugehen :)
Mario Siebert
Mitglied
Beiträge: 2295
Registriert: 09.12.2003 15:02
Wohnort: Irgendwo im Nirgendwo

Beitrag von Mario Siebert »

So muss es ausschauen:

Code: Alles auswählen

$template->assign_vars(array(
'EINGABE' => 'Dieser Planet existiert noch nicht in unserer Datenbank! Du musst zuerst die Galaxieansicht einlesen!')
);
Grüße Mario
Wer gegen eine geringe Gebühr (höhe der Gebühr bestimmst du selbst!!) ein phpBB installiert oder Mods eingebaut haben möchte sollte sich melden unter: netcom_service@gmx.net - Bisherige Aufträge 68.071
Auf Anfrage führe ich auch Reparaturen/Updates und Serverumzüge durch oder baue Mods!
Einste1n
Mitglied
Beiträge: 520
Registriert: 09.06.2004 18:54

Beitrag von Einste1n »

klappt leider nicht, kommt immer noch die gleiche meldung :(

Fatal error: Call to a member function assign_vars() on a non-object in C:\Programme\Webserver\xampp\htdocs\funktionen.inc on line 78
Einste1n
Mitglied
Beiträge: 520
Registriert: 09.06.2004 18:54

Beitrag von Einste1n »

also irgendwie kapiere ich nix mehr!
ich hab jetzt einfach mal was geschrieben, wo eine Template-Datei geladen wird, dann eine php datei includet wo eine einfache zuweisung gemacht wird und dann wirds ausgegeben. funktioniert tadellos ... viel anders ist es in unseren mod auch net, und trotzdem kommt in unserem mod so eine dumme Fehlermeldung :(

hier nochmal ne genauere beschreibung des probs, vieleicht erkennt das problem ja jemand

datenbank.php

Code: Alles auswählen

<?php 
//Benötigte Dateien und Variablen von phpBB 
define('IN_PHPBB', true); 
$phpbb_root_path = './'; 
include($phpbb_root_path . 'extension.inc'); 
include($phpbb_root_path . 'common.'.$phpEx); 


//Session auslesen und Benutzer-Informationen laden 
$userdata = session_pagestart($user_ip, PAGE_INDEX); 
init_userprefs($userdata); 


//Dieser Block kann weggelassen werden, wenn du nur den die Userdaten brauchst und auf den phpBB-Header verzichen möchtest 
$page_title = 'OgameDB'; 
include($phpbb_root_path . 'includes/page_header.'.$phpEx); 



// TPL Laden

$template->set_filenames(array( 
    'meine_seite' => 'datenbank.tpl', 
));

include("funktionen.inc");
switch ($_GET['action']) {
    case "textfeld":
$template->assign_var('EINGABE', '<div align=center><form action="?action=einlesen" method="POST"><textarea name="text" cols="100" rows="20"></textarea>
               <br><input type="submit" value="einlesen"></div></form>');
        break;
    case "einlesen":
        check_kind_of_text($_POST['text']);
        break;
    default:
$template->assign_var('EINGABE', '<a href="?action=textfeld">Spionagebericht einlesen</a>');
$template->assign_var('FLOTTE', '<a href="fleet.php">Fleettimer starten</a>');
}
$template->pparse('meine_seite');

//Footer - nur dann weglassen, wenn du auch den Header weglässt 
include($phpbb_root_path . 'includes/page_tail.'.$phpEx); 
?>
wie man sieht wird eine funktionen.inc includet und diese macht an dieser stelle probs

funktionen.php

Code: Alles auswählen

    if ($planeten = mysql_fetch_array($query)) {
        $spioergebnisse['planet_id'] = $planeten['id'];
    } else {
$template->assign_var('EINGABE', 'Dieser Planet existiert noch nicht in unserer Datenbank! Du musst zuerst die Galaxieansicht einlesen!');
    }
Es kommt diese Fehlermeldung wenn das else ausgelöst wird

Fatal error: Call to a member function assign_var() on a non-object in C:\Programme\Webserver\xampp\htdocs\funktionen.inc on line 78

ich sitze da schon seit Stunden dran und kann mir einfach nicht erklären wie das zustande kommt. Hat einer ne Idee ?
unTouched
Mitglied
Beiträge: 119
Registriert: 26.04.2004 12:25
Kontaktdaten:

Beitrag von unTouched »

also erstmal wenns
funktionen.php
heisst wieso includest dus dann mit
funktionen.inc?

ansonsten ist der fehler wohl das du immer
$template->assign_vars(array('EINGABE' => '...
verwenden solltest anstatt
$template->assign_vars(array('EINGABE' ,... << FALSCH

Pete®

ach ja der fehler bedeutet das $template kein objekt ist -> funktionen...... enthällt funktionen ala
function xyz()
{
} ... ?

wenn ja musst du am anfang solcher funktionen
function xyz()
{
global $template;
}

machen (sowie noch paar anderer sachen die du aus dem globalen bereich verwendest...

hoffe das hilft dir weiter
Hangman Support:
http://www.coded4u.de/
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“