Contao-Camp 2024
Ergebnis 1 bis 11 von 11

Thema: Custom Insert-Tag erstellen

  1. #1
    Contao-Fan
    Registriert seit
    29.06.2016.
    Beiträge
    500

    Standard Custom Insert-Tag erstellen

    Hallo,

    ich möchte einen Custom Insert-Tag erstellen.

    Wenn ich mich an die Anleitung halte:
    https://docs.contao.org/dev/framewor...tom-insert-tag
    ... funktioniert das Ganze jedoch nicht.

    Laut Anleitung erstelle ich diese Datei:
    Code:
    // src/EventListener/Rot13InsertTagListener.php
    namespace App\EventListener;
    
    use Contao\CoreBundle\ServiceAnnotation\Hook;
    
    /**
     * @Hook("replaceInsertTags")
     */
    class Rot13InsertTagListener
    {
        public const TAG = 'rot13';
        
        public function __invoke(string $tag)
        {
            $chunks = explode('::', $tag);
    
            if (self::TAG !== $chunks[0]) {
                return false;
            }
            
            return str_rot13($chunks[1]);
        }
    }
    ... lösche den Cache ...

    ... und probiere es dann mit:
    {{rot13::Payload|uncached}}

    das Ergebnis: Nichts wird ausgegeben

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

    Standard

    Teste mit
    Code:
    vendor/bin/contao-console debug:container Rot13InsertTagListener
    ob dein Service korrekt registriert ist.

    Außerdem, wieso testest du mit |uncached? Hast du den HTTP Cache aktiviert?
    » sponsor me via GitHub or PayPal or Revolut

  3. #3
    Contao-Fan
    Registriert seit
    29.06.2016.
    Beiträge
    500

    Standard

    Der Test spuckt mir folgende Fehlermeldung aus:
    No services found that match "Rot13InsertTagListener".

    Ich muss ja nur diese eine Datei:
    // src/EventListener/Rot13InsertTagListener.php
    ... anlegen um einen Hook zu erstellen, oder?

    Der Versuch mit "{{rot13::Payload}}" führt auch zu keiner Ausgabe.

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

    Standard

    Hast du evt. <?php vergessen?
    » sponsor me via GitHub or PayPal or Revolut

  5. #5
    Contao-Fan
    Registriert seit
    29.06.2016.
    Beiträge
    500

    Standard

    Das "<?php" fehlt nur bei dem Snippet hier im Forum.

    Ich hab Contao 4.12.7 im Einsatz.
    Da müsste das Ganze doch funktionieren, oder?



    Nochmal zur Sicherheit ob ich auch alles richtig gemacht habe:

    #1
    Die Datei hier anlegen:
    Bildschirmfoto 2022-05-10 um 16.35.02.png

    #2
    Das hier reinpacken:
    Code:
    <?php 
    
    namespace App\EventListener;
    
    use Contao\CoreBundle\ServiceAnnotation\Hook;
    
    /**
     * @Hook("replaceInsertTags")
     */
    class Rot13InsertTagListener
    {
        public const TAG = 'rot13';
        
        public function __invoke(string $tag)
        {
            $chunks = explode('::', $tag);
    
            if (self::TAG !== $chunks[0]) {
                return false;
            }
            
            return str_rot13($chunks[1]);
        }
    }
    #3
    Cache leeren

    #4
    Mit dem hier testen: {{rot13::Payload}}



    ... funktioniert diese Methode denn bei jemand anderem hier?
    Geändert von thesweetg (10.05.2022 um 16:40 Uhr)

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

    Standard

    Du hast ein src/AppBundle. Poste mal deine composer.json und deine config/config.yaml und ggf. config/services.yaml.
    » sponsor me via GitHub or PayPal or Revolut

  7. #7
    Contao-Fan
    Registriert seit
    29.06.2016.
    Beiträge
    500

    Standard

    composer.json
    Code:
    {
        "name": "contao/managed-edition",
        "type": "project",
        "description": "Contao Open Source CMS",
        "license": "LGPL-3.0-or-later",
        "authors": [
            {
                "name": "Leo Feyer",
                "homepage": "https://github.com/leofeyer"
            }
        ],
        "require": {
            "contao/calendar-bundle": "^4.12",
            "contao/comments-bundle": "^4.12",
            "contao/conflicts": "@dev",
            "contao/faq-bundle": "^4.12",
            "contao/listing-bundle": "^4.12",
            "contao/manager-bundle": "4.12.*",
            "contao/news-bundle": "^4.12",
            "contao/newsletter-bundle": "^4.12",
            "do-while/contao-backupdb-bundle": "^1.3",
            "omosde/contao-om-backend": "^1.3",
            "madeyourday/contao-rocksolid-custom-elements": "^2.3",
            "codefog/contao-cookiebar": "^2.1",
            "ma3xl3/contao-easy-favicon": "^2.0",
            "codefog/contao-news_categories": "^3.1",
            "georgpreissl/facelift": "^1.0",
            "georgpreissl/projects": "dev-master",
            "madeyourday/contao-rocksolid-icon-picker": "^2.0",
            "terminal42/notification_center": "^1.5",
            "delahaye/dlh_googlemaps": "^2.4",
            "codefog/contao-widget_tree_picker": "^2.4",
            "grusch-it/contao-container-bundle": "^1.0",
            "georgpreissl/contao-ajax-page-load": "^1.0",
            "alnv/catalog-manager": "^1.32",
            "inspiredminds/contao-sibling-navigation": "^1.3",
            "terminal42/contao-changelanguage": "^3.2"
        },
        "repositories": [
            {
                "type": "path",
                "url": "vendor/georgpreissl/staff"
            },
            {
                "type": "path",
                "url": "vendor/georgpreissl/projects"
            }
        ], 
        "conflict": {
            "contao-components/installer": "<1.3"
        },
        "extra": {
            "contao-component-dir": "assets"
        },
        "scripts": {
            "post-install-cmd": [
                "@php vendor/bin/contao-setup"
            ],
            "post-update-cmd": [
                "@php vendor/bin/contao-setup"
            ]
        },
        "config": {
            "allow-plugins": {
                "composer/package-versions-deprecated": true,
                "contao-community-alliance/composer-plugin": true,
                "contao-components/installer": true,
                "contao/manager-plugin": true
            }
        }
    }

    config.yml
    Code:
    contao:
        url_suffix: ''

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

    Standard

    Zitat Zitat von thesweetg Beitrag anzeigen
    #4
    Mit dem hier testen: {{rot13::Payload}}
    Testen musst du primär mit
    Code:
    vendor/bin/contao-console debug:container Rot13InsertTagListener
    Solange der Service nicht korrekt registriert und getagged ist, kann es nicht funktionieren.
    » sponsor me via GitHub or PayPal or Revolut

  9. #9
    Contao-Fan
    Registriert seit
    29.06.2016.
    Beiträge
    500

    Standard

    Der Test spuckt immer noch folgendes aus:
    No services found that match "Rot13InsertTagListener".

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

    Standard

    Lösche/verschiebe mal alles andere aus dem src/ Verzeichnis und baue dann den Cache neu auf.
    » sponsor me via GitHub or PayPal or Revolut

  11. #11
    Contao-Fan
    Registriert seit
    29.06.2016.
    Beiträge
    500

    Standard

    ok, vielen Dank Spooky.
    Durch das Löschen des Ordners "AppBundle" hat es nun funktioniert

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
  •