Hallo zusammen,
ich habe Contao Version 4.9.13 installiert und eine Anfängerfrage.
Ich versuche anhand der Dev-Doku zu verstehen wie ein Hook registriert wird.
Wie empfohlen möchte ich das per Annotation durchführen.
Ich habe in /src/EventListener/ die ParseArticlesListener.php angelegt.
PHP-Code:
<?php
namespace App\EventListener;
use Contao\CoreBundle\ServiceAnnotation\Hook;
use Contao\FrontendTemplate;
use Contao\Module;
use Contao\UserModel;
/**
* @Hook("parseArticles")
*/
class ParseArticlesListener
{
public function __invoke(FrontendTemplate $template, array $newsEntry, Module $module): void
{
// Fetch the news entry's author
$author = UserModel::findByPk($newsEntry['author']);
// Override the "author" variable of the template with the row information of the author
$template->author = $author->row();
}
}
Dann in der composer.json die noch fehlende auotloading Direktive eingefügt:
Code:
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
Eine Kopie des template news_short.html5 erzeugt und entsprechend der Doku geändert.
Die Dokumentation zu Services habe ich so verstanden, das wegen der Verwendung des Namespace App die services.yml nicht notwendig bzw. darin kein weiterer Eintrag notwendig ist.
Im folgenden mit dem contao-manager den Composer Class Loader aktualisiert und den Cache geleert.
Im FE bekomme ich die gewünschte Änderung nicht angezeigt.
Auf der Konsole habe ich vendor/bin/contao-console debug:container "App\\EventListener\\ParseArticlesListener" aufgerufen.
Als Ergebnis erhalte ich im Logfile
Code:
[2021-04-15 16:34:46] console.CRITICAL: Error thrown while running command "debug:container 'App\EventListener\ParseArticlesListener'". Message: "No services found that match "App\EventListener\ParseArticlesListener"." {"exception":"[object] (Symfony\\Component\\Console\\Exception\\InvalidArgumentException(code: 0): No services found that match \"App\\EventListener\\ParseArticlesListener\". at /html/contao/vendor/symfony/framework-bundle/Command/ContainerDebugCommand.php:258)","command":"debug:container 'App\\EventListener\\ParseArticlesListener'","message":"No services found that match \"App\\EventListener\\ParseArticlesListener\"."} []
Offensichtlich wird der Service / Hook nicht geladen.
Anhand der Beiträge in der Community oder der Dokumentation ist es mir leider nicht gelungen meinen Fehler zu finden.
Kann mir jemand helfen bzw. einen Hinweis geben?
Lesezeichen