Ich versuche aktuell leider vergeblich ein ContentElement über die services.yaml zu registrieren.
Die letzten Male hatte ich das immer über die Annotations bzw. Attribute gemacht, so wie in der Dokumentation beschrieben. https://docs.contao.org/dev/framework/content-elements/
Nun musste ich ein paar Einträge in meiner services.yaml vornehmen, um "%kernel.project_dir%" an den Constructor einer Klasse zu übergeben. In Folge dessen wurde die Klasse, die ich bisher über das Attribut registriert hatte, nicht mehr registriert. Da ich alles gerne einheitlich hätte, hatte ich überlegt, nun alles sauber über die services.yaml zu registrieren.
Selbst in einer frischen Contao 5.3 Installation erhalte ich jedoch eine Fehlermeldung, wenn ich das ContentElement per services.yaml registrieren möchte.
PHP-Code:
// src/Controller/ContentElement/ExampleElementController.php
namespace App\Controller\ContentElement;
use Contao\CoreBundle\Controller\ContentElement\AbstractContentElementController;
use Contao\CoreBundle\DependencyInjection\Attribute\AsContentElement;
use Contao\ContentModel;
use Contao\Template;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
#[AsContentElement(category: 'texts')]
class ExampleElementController extends AbstractContentElementController
{
protected function getResponse(Template $template, ContentModel $model, Request $request): Response
{
return $template->getResponse();
}
}
Code:
# config/services.yaml
services:
App\Controller\ContentElement\ExampleElementController:
tags:
-
name: contao.content_element
category: texts
Rufe ich nun "php vendor/bin/contao-console cache:clear" oder "composer install" in der Konsole auf, erhalte ich folgende Fehlermeldung.
Code:
In CheckExceptionOnInvalidReferenceBehaviorPass.php line 119:
The service "contao.fragment._contao.content_element.example_element" has a dependency on a non-existent service "Psr\Container\ContainerInterface".