Ergebnis 1 bis 14 von 14

Thema: insertTag in php-Seite einfügen

  1. #1
    Contao-Nutzer
    Registriert seit
    24.12.2015.
    Beiträge
    14

    Standard insertTag in php-Seite einfügen

    Hallo,

    ich möchte in einer eingebundenen php-Seite:

    zb: {{file::mein_ordner/meine_seite.php}}

    innerhalb des Codes ein insertTag einfügen

    echo $this->replaceInsertTags('...');

    die Referenz auf $this ist hier aber nicht verfügbar. Wie kann ich das lösen?

    danke im voraus
    Mirko

  2. #2
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.615
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo MirkoK,

    normalerweise ist $this in der eingebundenen PHP-Datei verfügbar. In meinen Augen liegt der Fehler in dem Pfad zur PHP-Datei, denn der ist IMMER templates/, die Unterpfade dort sind nur für Themes, alles was PHP oder Backend betrifft, greift nur in templates/ zu. Im InsertTag also die Datei ohne Pfadangabe eintragen, dann sollte es auch funktionieren.

  3. #3
    Contao-Nutzer
    Registriert seit
    24.12.2015.
    Beiträge
    14

    Standard

    Zitat Zitat von do_while Beitrag anzeigen
    denn der ist IMMER templates/
    die datei liegt in einem Unterordner von templates

    ich konnte den Fehler eingrenzen:

    Teil 1
    echo($this->replaceInsertTags('{{insert_module::123}}'));

    funktioniert

    ich möchte allerdings den aufruf kapseln, also habe ich eine function erstellt, diese per include in die php eingefügt:

    Teil 2
    function contao_insertModule($i) {
    $insertWas = '{{insert_module::' . $i . '}}';
    return($this->replaceInsertTags($insertWas));
    }
    Fatal error: Using $this when not in object context in...

    $this steht also zur Verfügung, aber nicht in der includierten Datei.php. Gibt es dazu auch eine Lösung oder geht nur Teil 1?

  4. #4
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.615
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Du könntest aber die InsertTags auch erst wieder in der Hauptdatei auflösen:
    PHP-Code:
    echo( $this->replaceInsertTagscontao_insertModule($i) ) ); 

  5. #5
    Contao-Nutzer
    Registriert seit
    24.12.2015.
    Beiträge
    14

    Standard

    Zitat Zitat von do_while Beitrag anzeigen
    Du könntest aber die InsertTags auch erst wieder in der Hauptdatei auflösen:
    PHP-Code:
    echo( $this->replaceInsertTagscontao_insertModule($i) ) ); 
    ja klar, muss ich dann wohl so machen

    dh ich kann $this immer nur direkt in der eingebundenen php-datei benutzen? es gibt keine globale übergeordnete Klasse mit der ich Zugriff auf $this habe?

  6. #6
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.615
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Wenn Du Deine Klasse in $this importierst, solltest Du dort auch ein $this zur Verfügung haben.

  7. #7
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.457
    Partner-ID
    10107

    Standard

    Benutze einfach
    PHP-Code:
    \Controller::replaceInsertTags(); 

  8. #8
    Contao-Nutzer
    Registriert seit
    24.12.2015.
    Beiträge
    14

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Benutze einfach
    PHP-Code:
    \Controller::replaceInsertTags(); 
    danke, habe ich auch schon probiert:

    Fatal error: Call to protected method Contao\Controller::replaceInsertTags() from context ...

  9. #9
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.457
    Partner-ID
    10107

    Standard

    Ah, dann scheinst du wohl noch eine alte Contao Version zu benutzen. Ab Contao 3.3 (iirc) würde das so funktionieren.

  10. #10
    Contao-Nutzer
    Registriert seit
    24.12.2015.
    Beiträge
    14

    Standard

    Contao Open Source CMS 3.4.0

    hab gerade beide Versionen getestet:

    echo \Controller::replaceInsertTags('{{insert_module::1 7}}');

    in der ausgeführten php geht es

    aber wenn ich eine function mit include einbinde, kommt der fehler:

    Fatal error: Call to protected method Contao\Controller::replaceInsertTags() from context ''
    Geändert von MirkoK (24.12.2015 um 12:32 Uhr)

  11. #11
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.457
    Partner-ID
    10107

    Standard

    Ok, ja ist erst ab Contao 3.5.0 public static.

    Evt. funktioniert sowas wie
    PHP-Code:
    $this->import('Controller');
    $this->Controller->replaceInsertTags(); 
    Oder du aktualisierst auf Contao 3.5

  12. #12
    Contao-Nutzer
    Registriert seit
    24.12.2015.
    Beiträge
    14

    Standard

    danke ich teste mal das update

  13. #13
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.457
    Partner-ID
    10107

    Standard

    Du kannst übrigens auch direkt
    PHP-Code:
    echo \Controller::getFrontendModule($intId); 
    verwenden. Davon abgesehen gibt es zB auch noch
    PHP-Code:
    \Controller::getArticle();
    \
    Controller::getContentElement();
    \
    Controller::getForm(); 
    Siehe https://github.com/contao/core/blob/...Controller.php

  14. #14
    Contao-Nutzer
    Registriert seit
    24.12.2015.
    Beiträge
    14

    Standard

    das wars, mit Contao Open Source CMS 3.5.6 geht alles wie gewünscht, danke

Aktive Benutzer

Aktive Benutzer

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

Lesezeichen

Lesezeichen

Berechtigungen

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