Ergebnis 1 bis 23 von 23

Thema: Using $this when not in object context

  1. #1
    Contao-Fan Avatar von marcos
    Registriert seit
    09.02.2011.
    Ort
    Schweiz
    Beiträge
    575
    User beschenken
    Wunschliste

    Standard Using $this when not in object context

    Hallo zusammen

    Ich habe ein kleines Programmier-Problem und bin nicht sicher, wie ich das am schönsten lösen soll.
    Ich habe zwei Dateien: booking.html5 und functions.html5. Die functions.html5 wird mit include_once() bei booking.html5 eingebunden.

    In der Functions-Datei sind logischerweise meine diversen Funktionen enthalten. Ich wollte nun in dieser Datei eine Funktion mit einer DB Abfrage erstellen. Der SQL-String wird übergeben und dann soll damit das Select-Menü generiert werden:
    PHP-Code:
    function getSelectMenu($sql){
        
    $this->import('Database');
        
    $result $this->Database->prepare($sql)->execute();  
        
    $output '<select><option>Bitte wählen</option>';
        while(
    $result->next())
        {
            
    $output .= '<option value="'.$result->id.'">'.$result->name.'</option>';
        }
        
    $output .= '</select>';

        return(
    $output);

    Diese Funktion gibt mir aber folgende Fehlermeldung zurück:
    Code:
    Fatal error: Using $this when not in object context in /home/....

    Dies ist ja wahrscheinlich, weil ich $this-> in einer eigenen Funktion anwende. Wie löse ich das jetzt aber, dass die DB Abfrage auch in meiner Funktion funktioniert?

    Danke und LG
    Marco

  2. #2
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.553
    User beschenken
    Wunschliste

    Standard

    Läuft das in einer Umgebung von Contao 3?
    Dann könnte du das mal versuchen:
    PHP-Code:
    function getSelectMenu($sql){
        
    $result Database::getInstance()->prepare($sql)->execute();
        
    $output '<select><option>Bitte wählen</option>';
        while(
    $result->next())
        {
        
    $output .= '<option value="'.$result->id.'">'.$result->name.'</option>';
        }
        
    $output .= '</select>';

        return(
    $output);

    Wenn du jedoch völlig unabhängig davon arbeitest, dann müsstest du erst die ganze Umgebung initialisieren.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  3. #3
    Contao-Fan Avatar von marcos
    Registriert seit
    09.02.2011.
    Ort
    Schweiz
    Beiträge
    575
    User beschenken
    Wunschliste

    Standard

    Hallo BugBuster!

    Vielen Dank für deine schnelle Antwort! Ja, ich setze Contao 3 ein und ja, es funktioniert damit wunderbar!

    Ich erhalte jetzt aber einen grösseren Array:

    Code:
    Contao\Database\Mysql\Result Object
    (
        [resResult:protected] => Resource id #186
        [strQuery:protected] => SELECT * FROM tl_canton
        [intIndex:Contao\Database\Result:private] => 0
        [blnDone:Contao\Database\Result:private] => 
        [blnModified:Contao\Database\Result:private] => 
        [arrCache:protected] => Array
            (
                [id] => 1
                [canton] => AG
            )
    )

    Ich musste also meine Abfrage noch erweitern:
    PHP-Code:
    function getSelectMenu($sql){
        
    $result Database::getInstance()->prepare($sql)->execute(); 
        
    $output '<select><option>Bitte wählen</option>';
        
    $i=0;
        while(
    $result->next())
        {
            
    $arrValues[] = $result->row();
            
    $output .= '<option value="'.$arrValues[$i]['id'].'">'.$arrValues[$i]['canton'].'</option>';
            ++
    $i;
        }
        
    $output .= '</select>';

        return(
    $output);

    Etwas unschön an der Sache ist noch, dass row() einen associativen Array zurück gibt. Besser wäre es, wenn ich die Werte mit Nummern ansprechen könnte. Sonst müsste ich meiner Funktion immer noch die Feld-Namen mitgeben...
    Ich habe auch scho bei der Contao API für Database Result nachgeschaut. Es scheint da aber nur die Funktion row() zu geben. Wenn ich fetchRow() einsetze, gibt er mir nicht alle Werte aus...

    Gruss
    Marco

  4. #4
    Contao-Nutzer
    Registriert seit
    19.06.2009.
    Ort
    Deutschland
    Beiträge
    96

    Standard Fehlermeldung beim Modul listing

    Hallo,

    habe nach Update auf 3.2.11 folg. Fehler:

    Europe/Berlin] PHP Fatal error: Using $this when not in object context in /is/htdocs/xxx/www/cms3/system/modules/listing/modules/ModuleListing.php on line 189

  5. #5
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.553
    User beschenken
    Wunschliste

    Standard

    Gibts da noch mehr drum rum bei der Meldung? Das allein hilft nicht.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  6. #6
    Contao-Nutzer
    Registriert seit
    19.06.2009.
    Ort
    Deutschland
    Beiträge
    96

    Standard

    Nein, das ist alles.
    Wenn ich die Seite mit dem Modul aufrufe, bleibt sie weiß.

  7. #7
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.553
    User beschenken
    Wunschliste

    Standard

    Dann schalte mal die Fehlermeldungen kurz an und rufe die Seite auf, dann sollte eine mehrzeilige Fehlermeldung kommen.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  8. #8
    Contao-Nutzer Avatar von philsniff
    Registriert seit
    29.07.2009.
    Ort
    Neumünster
    Beiträge
    72

    Standard

    habe genau das gleiche problem. lasse den aktuellen newsletter immer so ausgeben. jetzt nur ne weiße seite und im error.log die oben beschriebene meldung.
    schalte jetzt mal kurz die fehlermeldung an...

    edit: nichts! schalte ich das listing-modul an bleibt die seite komplet weiß. ist aber aufrubar. kein quelltext?!
    komischer weise läuft es aber auf der lokalen installation unter wamp?!
    Geändert von philsniff (05.06.2014 um 11:48 Uhr)

  9. #9
    Contao-Nutzer
    Registriert seit
    19.06.2009.
    Ort
    Deutschland
    Beiträge
    96

    Standard

    Der Bildschirm bleibt auch bei eingeschalteter Fehlermeldung weiß, im Quelltext erscheint eine graue 1. Der o.g. Fehler ist nur in der Log-Datei.
    Habe die Erweiterung jetzt deaktiviert, damit der Seitenzugriff wieder funktioniert.


    edit: Bei mir geht es auch um die Auflistung von Newsletterdaten!
    Geändert von Wolfi (05.06.2014 um 12:18 Uhr)

  10. #10
    Contao-Nutzer Avatar von philsniff
    Registriert seit
    29.07.2009.
    Ort
    Neumünster
    Beiträge
    72

    Standard

    geht mir genauso, aber das will ich nicht wahrhaben...

    [05-Jun-2014 12:00:01 Europe/Berlin] PHP Fatal error: Using $this when not in object context in /is/htdocs/xxxxxxxxxxx/v3/system/modules/listing/modules/ModuleListing.php on line 196
    edit: habe mal zu testzwecken die auflistung auf "newsletterliste" geändert: auch da eine weiße seite, allerdings mit einer anderen error.log-meldung:

    [05-Jun-2014 12:04:57 Europe/Berlin] PHP Fatal error: Call to a member function loadDetails() on a non-object in /is/htdocs/xxxxxxxxxxxxxxxxx/v3/system/modules/newsletter/modules/ModuleNewsletterList.php on line 102
    Geändert von philsniff (05.06.2014 um 12:07 Uhr)

  11. #11
    Contao-Nutzer Avatar von philsniff
    Registriert seit
    29.07.2009.
    Ort
    Neumünster
    Beiträge
    72

    Standard problem eingekreist!

    es liegt an der option im modul "auflistung"!

    ich bin mit einer kopie meines vorhandenen newsletter auflistungs-modul durchgegangen. alle optionen (Bedingungen, Felder, Tabelle etc.) erstmal leer gelassen.
    und es wurden alle newsletter angezeigt, nachdem ich die tabelle und das feld "content" angegeben habe.

    alle bedingungen wieder reinkopiert (einige sondernewsletter sollten nicht angezeigt werden) funktionierten dann auch.

    bis ich zum optionsfeld "Sortieren nach" kam. dort hatte ich noch "date desc" drin. wieder einkopiert:
    resultat weiße seite!

    nur "date" rein: weiße seite!
    sortiert nach "id": weiße seite!

    hmmm...

    edit: aber auf der lokalen installation funktionierte es bis jetzt immer. das bedeutet, dass es irgendwie mit der mysql query probleme gibt?

    kann das bitte jemand aufklären, oder ein ticket erstellen? ich bin da nicht so firm
    Geändert von philsniff (05.06.2014 um 12:44 Uhr)

  12. #12
    Contao-Urgestein
    Registriert seit
    03.06.2010.
    Ort
    Wuppertal
    Beiträge
    2.149
    User beschenken
    Wunschliste

    Standard

    https://github.com/contao/core/commi...omment-6566900

    Da ist wohl ein Fehler im Backport - die momentane Funktion wird nur mit PHP 5.4 und höher funktionieren

  13. #13
    Contao-Nutzer Avatar von philsniff
    Registriert seit
    29.07.2009.
    Ort
    Neumünster
    Beiträge
    72

    Standard

    aber es ging ja die ganze zeit auch vorher

    erst seitdem ich von 3.2 auf die 3.3.x geupdatet habe geht es nicht mehr?!

    edit: danke dir Flex, wenn du es anscheinend weitergeleitet hast!
    Geändert von philsniff (05.06.2014 um 12:53 Uhr)

  14. #14
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.553
    User beschenken
    Wunschliste

    Standard

    achherje, du meinst das hier, oder?
    Code:
    Changelog
    
    Version 	Description
    5.4.0 	 	$this can be used in anonymous functions.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  15. #15
    Contao-Urgestein
    Registriert seit
    03.06.2010.
    Ort
    Wuppertal
    Beiträge
    2.149
    User beschenken
    Wunschliste

    Standard

    @BugBuster: Genau.

    Betroffen sind nur 3.2.3 und 3.2.11

  16. #16
    Contao-Nutzer
    Registriert seit
    19.06.2009.
    Ort
    Deutschland
    Beiträge
    96

    Standard

    Na toll! PHP 5.4 ist bei HE derzeit nicht verfügbar (aktuell 5.3.28); auf Nachfrage beim Support legt man sich auch nicht fest, wann das sein wird. Jetzt habe ich nicht einmal Contao 3.3 sondern 3.2.11!?
    Muss ich jetzt wieder auf 3.2.10 und dort solange verharren, bis HE PHP 5.4 anbietet??

  17. #17
    Contao-Fan Avatar von marcos
    Registriert seit
    09.02.2011.
    Ort
    Schweiz
    Beiträge
    575
    User beschenken
    Wunschliste

    Standard

    Was ist das denn für ein Hoster? Das Ende der offiziellen Unterstützung von PHP 5.3 endet am 31. Juli 2014. Ab diesem Zeitpunkt werden allfällige Sicherheitslücken nicht mehr geschlossen. Aus diesem Grund werfen die meisten Hoster PHP 5.3 in den nächsten Monaten aus dem Sortiment. Standard sollte 5.4 sein und 5.5 stellt dir ein guter Hoster auch bereits zu Verfügung. Ich würde den Hoster wechseln!

    http://en.wikipedia.org/wiki/PHP#Release_history
    Geändert von marcos (06.06.2014 um 11:38 Uhr)

  18. #18
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.553
    User beschenken
    Wunschliste

    Standard

    Hi Wolfi,
    na es müsste auch gehen die 3.2.11 mit der Datei system/modules/listing/modules/ModuleListing.php von 3.2.10
    Nur dann haste halt den "Sort by Date" Fix nicht mehr. Aber falls das nicht stört wäre das ne Alternative.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  19. #19
    Contao-Nutzer
    Registriert seit
    19.06.2009.
    Ort
    Deutschland
    Beiträge
    96

    Standard

    Standard sollte 5.4 sein und 5.5 stellt dir ein guter Hoster auch bereits zu Verfügung. Ich würde den Hoster wechseln!
    Nun es betrifft HostEurope (HE), ein durchaus nicht gerade unbedeutender Hoster und es gibt viele Contao-User, die damit arbeiten! Ich bin also nicht der einzige mit dem Problem! Über gute und schlechte Hoster lässt sich bekanntlich streiten, die Aktualität der PHP-Version ist nicht das einzige Kriterium für die Hoster-Auswahl bzw. für einen Wechsel.

    BugBuster, vielen Dank für deinen Rat, ich werde das als Übergangslösung so machen.

  20. #20
    Contao-Urgestein
    Registriert seit
    03.06.2010.
    Ort
    Wuppertal
    Beiträge
    2.149
    User beschenken
    Wunschliste

    Standard

    Mal als Klarstellung:
    Es ist ein BUG dass Contao 3.2.11 mit dem listing Modul momentan PHP 5.4 benötigt. Das ist NICHT beabsichtigt.
    Wird mit 3.2.12 sicher wieder behoben.

  21. #21
    Contao-Nutzer
    Registriert seit
    09.12.2012.
    Beiträge
    96

    Standard

    Hm... wie hier beschrieben bekomme ich mit PHP 5.4 dieselbe Fehlermeldung beim Listing-Modul... erst das Zurückspielen der Datei ModuleListing.php von Contao 3.2.10 bringt Abhilfe.

  22. #22
    Contao-Nutzer Avatar von sebi
    Registriert seit
    17.03.2012.
    Ort
    Kiel
    Beiträge
    154

    Standard

    Ich habe den selben Fehler in 3.3.2 - eine Lösung gibt es noch nicht, oder?
    Außer die entsprechenden Änderungen von Hand zurück zu drehen.

  23. #23
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.553
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Kater Beitrag anzeigen
    Hm... wie hier beschrieben bekomme ich mit PHP 5.4 dieselbe Fehlermeldung beim Listing-Modul... erst das Zurückspielen der Datei ModuleListing.php von Contao 3.2.10 bringt Abhilfe.
    Welche Version von 5.4 hast du genau?
    Ich habe 5.4.6 , und damit funktioniert es.
    (tl_member und per Klick sortiert nach dateOfBirth Feld.)
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •