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 $page, string $params, string $url): string
{
return $url;
}
}
Und als Fehlermeldung wird mir folgendes ausgegeben:
PHP-Code:
[2022-08-24 11:16:26] app.CRITICAL: An 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.
Lesezeichen