Hallo,

ich möchte gerne bei bestimmten URLs eine '#' bei der Zusammensetzung der URL anfügen. Contao verbietet es von Haus aus, dass '#' an URLs vom Backend End aus angefügt werden können. Ich hatte gedacht, dass der GenerateFrontendUrl Hook dafür passend ist, jedoch bekomme ich diesen nicht fehlerfrei zum Laufen.

In meiner config.php habe ich folgendes eingefügt:
PHP-Code:
$GLOBALS['TL_HOOKS']['generateFrontendUrl'][] = [\App\EventListener\GenerateFrontendUrlListener::class, '__invoke']; 
Die GenerateFrontendUrlListener.php sieht so aus:
PHP-Code:
<?php
    
// src/EventListener/GenerateFrontendUrlListener.php
    
namespace App\EventListener;
    
    use 
Contao\CoreBundle\ServiceAnnotation\Hook;
    
    
/**
     * @Hook("generateFrontendUrl")
     */
    
class GenerateFrontendUrlListener
    
{
        public function 
__invoke(array $pagestring $paramsstring $url): string
        
{
            return 
$url;
        }
    }
Und als Fehlermeldung wird mir folgendes ausgegeben:

PHP-Code:
[2022-08-24 11:16:26app.CRITICALAn exception occurred. {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalThrowableError(code: 0): Type error: Argument 2 passed to App\\EventListener\\GenerateFrontendUrlListener::__invoke() must be of the type string, null given, called in .../contao/vendor/contao/core-bundle/src/Resources/contao/models/PageModel.php on line 1092 at .../contao/src/EventListener/GenerateFrontendUrlListener.php:12)"} [] 
Hat jemand dazu einen Rat? Ich habe lediglich den Hook von der Contao Dokumentation genommen.