Ergebnis 1 bis 14 von 14

Thema: replaceInsertTags in Contao 5

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

    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
    34.063
    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 PayPal or Revolut

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

    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
    34.063
    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 PayPal or Revolut

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

    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
    34.063
    Partner-ID
    10107

    Standard

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

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

    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
    34.063
    Partner-ID
    10107

    Standard

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

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

    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
    34.063
    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 PayPal or Revolut

  11. #11
    Contao-Nutzer Avatar von Niels H
    Registriert seit
    14.08.2012.
    Ort
    Köln
    Beiträge
    79
    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
    34.063
    Partner-ID
    10107

    Standard

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

  13. #13
    Contao-Nutzer Avatar von Niels H
    Registriert seit
    14.08.2012.
    Ort
    Köln
    Beiträge
    79
    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
    34.063
    Partner-ID
    10107

    Standard

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

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
  •