Ergebnis 1 bis 16 von 16

Thema: replaceInsertTags in Contao 5

  1. #1
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    145

    Standard replaceInsertTags in Contao 5

    Hallo zusammen,

    ich aktualisiere gerade eine meiner Erweiterungen um eine Kompatibilität mit Contao 5 zu ermöglichen.
    In einem html5 Template konnte ich bisher problemlos die Funktion replaceInsertTags() verwenden:

    PHP-Code:
    $language $this->replaceInsertTags('{{page::language}}'); 
    Dies endet jedoch lediglich in dem folgenden Fehler:

    request.CRITICAL: Uncaught PHP Exception InvalidArgumentException: "replaceInsertTags is not set or not a callable" at [...]/vendor/contao/core-bundle/contao/library/Contao/Template.php line 182 {"exception":"[object] (InvalidArgumentException(code: 0): replaceInsertTags is not set or not a callable at [...]/vendor/contao/core-bundle/contao/library/Contao/Template.php:182)"} []
    Ich habe auch schon versucht statt $this->replaceInsertTags() \\Controller::replaceInsertTags() zu verwenden, doch auch hier komme ich nicht weiter.

    Hat hier jemand einen Tipp?

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

    Standard

    Using "Controller::replaceInsertTags" has been deprecated and will no longer work in Contao 5.0. Use the InsertTagParser service instead.
    » https://docs.contao.org/dev/referenc...nserttagparser
    » sponsor me via GitHub or Revolut

  3. #3
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    145

    Standard

    Kannst du das eventuell noch etwas näher erläutern?

    Ein Umstieg auf
    PHP-Code:
    $language $this->insertTagParser->replace('{{page::language}}'); 
    endet leider in:

    HTML-Code:
    Uncaught PHP Exception Error: "Call to a member function replace() on null
    Was mache ich hier falsch?

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

    Standard

    Für {{page::language}} brauchst du das gar nicht, da kannst du direkt $GLOBALS['TL_LANGUAGE'] nehmen.
    » sponsor me via GitHub or Revolut

  5. #5
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    145

    Standard

    Das probiere ich direkt mal, danke!
    Ich nutze die Funktion allerdings beispielsweise auch für env::request, wie wäre denn die richtige Vorgehensweise für den insertTagParser?

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

    Standard

    Auch dafür brauchst du keine Insert Tags.
    PHP-Code:
    Contao\Environment::get('request'
    » sponsor me via GitHub or Revolut

  7. #7
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    145

    Standard

    Danke! Aber nach wie vor: wie müsste der insertTagParser denn richtig angewendet werden?

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

    Standard

    Wofür brauchst du das? Im Normalfall brauchst du das nicht selbst.
    » sponsor me via GitHub or Revolut

  9. #9
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    145

    Standard

    Ich hätte dies noch für
    PHP-Code:
    $this->insertTagParser->replace('{{page::alias}}'
    benötigt, aber vermutlich gibt es auch hier eine Alternative? Hast du da evtl. eine Übersicht, nach der man sich richten kann?

    Im allgemeinen hätte es mich einfach interessiert, wo bei der Anwendung mein Fehler gelegen hat.

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

    Standard

    Zitat Zitat von waldo Beitrag anzeigen
    Ich hätte dies noch für
    PHP-Code:
    $this->insertTagParser->replace('{{page::alias}}'
    benötigt
    PHP-Code:
    $GLOBALS['objPage']->alias 


    Zitat Zitat von waldo Beitrag anzeigen
    Im allgemeinen hätte es mich einfach interessiert, wo bei der Anwendung mein Fehler gelegen hat.
    Überhaupt selbst Insert Tags in einem Template zu replacen ist mit hoher Wahrscheinlichkeit immer falsch
    » sponsor me via GitHub or Revolut

  11. #11
    Contao-Nutzer Avatar von Niels H
    Registriert seit
    14.08.2012.
    Ort
    Köln
    Beiträge
    84
    Partner-ID
    11984

    Standard

    In der tl_page.php habe ich ein Feld mit dcaPicker hinzugefügt. Dort steht ja dann {{link_url::131}} oder eine URL drin.

    Da es ein InsertTag ist, lese ich das Feld im HooksListener dann mit folgendem Code aus:
    Code:
    use Contao\System;
    use Contao\PageModel;
    
    System::getContainer()->get('contao.insert_tag.parser')->replace($rootPage->cta_1_link)
    Oder gibt es dafür eine bessere Möglichkeit, mit der man nicht den InsertTag parsen muss?

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

    Standard

    Poste deinen gesamten Code um zu verstehen, warum du das überhaupt machst.
    » sponsor me via GitHub or Revolut

  13. #13
    Contao-Nutzer Avatar von Niels H
    Registriert seit
    14.08.2012.
    Ort
    Köln
    Beiträge
    84
    Partner-ID
    11984

    Standard

    Über den HooksListener füge ich die Links im Frontend ein, die im Startpunkt der Webseite eintragen werden:

    https://github.com/heimseiten/contao...ksListener.php

    https://github.com/heimseiten/contao...ca/tl_page.php

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

    Standard

    Anstatt
    PHP-Code:
    System::getContainer()->get('contao.insert_tag.parser'
    solltest du Dependency Injection nutzen.
    » sponsor me via GitHub or Revolut

  15. #15
    Contao-Nutzer
    Registriert seit
    23.05.2012.
    Beiträge
    109

    Standard {{link_url::*}} in inkludierten PHP-Dateien nutzen

    Hallo, ich hänge mich mal an dieses Thema an, weil mir das eine sehr ähnliche Problematik zu sein scheint. Dann hat man in Zukunft alles in diesem Thread beisammen.

    In einer älteren Contao 4.x Seite habe ich im Templates Ordner ein paar einfache PHP-Dateien, die ich direkt mit dem
    Code:
    {{file::php-includes/meineDatei.php}}
    einbinde.

    In diesen PHP-Dateien konnte ich bisher insertTags verwenden, wie z.B.
    PHP-Code:
    <a href="{{link_url::8}}" title="Zur Datenschutzerklärung">Datenschutzerklärung</a>. 
    Jetzt baue ich die Datei für Contao 5 um, finde aber nicht raus, wie ich das lösen kann. Mehrere Ansätze haben bisher nicht funktioniert. Wie kann ich jetzt die URL einer Seiten-ID bekommen, ohne einfach hart die URL ins Template zu schreiben?

  16. #16
    Contao-Nutzer
    Registriert seit
    23.05.2012.
    Beiträge
    109

    Standard

    Ich habe einen Grund und eine Lösung gefunden:
    Insert-Tags innerhalb von Contao im Backend eingebundener Templates per {{file::*}} funktionieren.

    Binde ich in ein Template (z.B. fe_page.html5) eine PHP Datei mit enthaltenen Insert-tags über {{file::*}} ein, werden die in der PHP-Datei enthaltenen insert-tags nicht mehr ausgewertet. Die Lösung ist die PHP-Datei im Template wie folgt einzubinden:

    PHP-Code:
    <?php include __DIR__ '/php-includes/meineDatei.php'?>

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
  •