Contao-Camp 2024
Ergebnis 1 bis 3 von 3

Thema: Nur ein Insert-Tag über Invokable Services Annotation möglich?

  1. #1
    Contao-Nutzer Avatar von chatjack
    Registriert seit
    02.09.2012.
    Ort
    Essen
    Beiträge
    160

    Standard Nur ein Insert-Tag über Invokable Services Annotation möglich?

    Hallo,

    ich versuche gerade zwei Insert Tags über ServiceAnnotations zu registrieren. Mit dem ersten InsertTag hat auch alles geklappt.

    PHP-Code:
    // src/EventListener/ColorInsertTagListener.php

    namespace App\EventListener;

    use 
    Contao\CoreBundle\ServiceAnnotation\Hook;

    /**
     * @Hook("replaceInsertTags")
     */
    class ColorInsertTagListener
    {
        public const 
    TAG 'color';
        
        public function 
    __invoke(string $tag)
        {

            
    // Split tag
            
    $chunks explode('::'$tag);

            
    // Check if tag is valid
            
    if (count($chunks) !== || $chunks[0] !== self::TAG) return $tag;

            
    // Return string
            
    return '<span class="color-' $chunks[1] . '">' $chunks[2] . '</span>';

        }

    Leider wird mein zweiter Insert-Tag ignoriert.

    PHP-Code:
    // src/EventListener/StrongInsertTagListener.php

    namespace App\EventListener;

    use 
    Contao\CoreBundle\ServiceAnnotation\Hook;

    /**
     * @Hook("replaceInsertTags")
     */
    class StrongInsertTagListener
    {
        public const 
    TAG 'strong';
        
        public function 
    __invoke(string $tag)
        {

            
    // Split tag
            
    $chunks explode('::'$tag2);

            
    // Check if tag is valid
            
    if (count($chunks) !== || $chunks[0] !== self::TAG) return $tag;
            
            
    // Return string
            
    return '<strong>' $chunks[1] . '</strong>';

        }

    Wenn ich aber den ersten Listener lösche, wird der zweite Listener berücksichtigt. Er scheint, als könne hier maximal ein Listener über Annotations definiert werden. Ist das bei Annotations normal oder muss hier noch etwas ergänzt werden? Habe leider noch nichts dazu finden können.

    Danke und VG
    Dennis

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

    Standard

    Siehe https://docs.contao.org/dev/referenc...#return-values

    Du musst in deinem Hook überprüfen, ob der übergebene Insert-Tag der für den jeweiligen Hook relevante Insert-Tag ist. Wenn nicht, musst du false zurück geben.
    » sponsor me via GitHub or PayPal or Revolut

  3. #3
    Contao-Nutzer Avatar von chatjack
    Registriert seit
    02.09.2012.
    Ort
    Essen
    Beiträge
    160

    Standard

    Hey Spooky,

    da hatte ich wieder ein Brett vor dem Kopf. Danke für den Hinweis, absolut logisch. Damit klappt es wunderbar.

    PHP-Code:
    <?php

    namespace App\EventListener;

    use 
    Contao\CoreBundle\ServiceAnnotation\Hook;

    /**
     * @Hook("replaceInsertTags")
     */
    class ColorInsertTagListener
    {
        public const 
    TAG 'color';
        
        public function 
    __invoke(string $tag)
        {

            
    // Split tag
            
    $chunks explode('::'$tag3);

            
    // Check if tag is valid
            
    if (count($chunks) !== || $chunks[0] !== self::TAG) return false;

            
    // Return string
            
    return '<span class="color-' $chunks[1] . '">' $chunks[2] . '</span>';

        }
    }
    PHP-Code:
    <?php

    namespace App\EventListener;

    use 
    Contao\CoreBundle\ServiceAnnotation\Hook;

    /**
     * @Hook("replaceInsertTags")
     */
    class StrongInsertTagListener
    {
        public const 
    TAG 'strong';
        
        public function 
    __invoke(string $tag)
        {

            
    // Split tag
            
    $chunks explode('::'$tag2);

            
    // Check if tag is valid
            
    if (count($chunks) !== || $chunks[0] !== self::TAG) return false;
            
            
    // Return string
            
    return '<strong>' $chunks[1] . '</strong>';

        }
    }

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
  •