Fehler beim Anlegen eines Custom Content Elements
Hallo Contao-Forum,
ich versuche gerade ein custom content element anzulegen, was soweit auch größtenteils funktioniert hat.
Ich habe mich dabei genau an die Anleitung gehalten: https://docs.contao.org/dev/framework/content-elements/
Nun wird mir das Content-Element bereits im Backend angezeigt und ich kann es konfigurieren.
Wenn ich es jedoch speichere erhalte ich folgenden Fehler:
Code:
The controller for URI "/contao" is not callable: Method "getResponse" on class "Agonyz\MyContaoBundle\Controller\ContentElementController" should be public and non-abstract.
Mein Controller sieht so aus:
PHP-Code:
<?php
namespace Agonyz\MyContaoBundle\Controller;
use Contao\ContentModel;
use Contao\CoreBundle\Controller\ContentElement\AbstractContentElementController;
use Contao\Template;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class ContentElementController extends AbstractContentElementController
{
protected function getResponse(Template $template, ContentModel $model, Request $request): Response
{
$template->text = $model->text;
$template->url = $model->url;
return $template->getResponse();
}
}
Mein zugehöriger Service aus der services.yml sieht so aus:
Code:
services:
_defaults:
autoconfigure: true
public: false
Agonyz\MyContaoBundle\Controller\ContentElementController:
public: true
tags:
-
name: contao.content_element
category: texts
template: ce_my_content_element
method: getResponse
type: my_content_element
Die Methode wird in der Anleitung aber explizit als protected definiert.
Ich habe diese testweise mal auf public umgeschrieben und erhalte dann einen weiteren Fehler bzgl. fehlender controller service arguments.
Wie müsste ich das hier denn richtig implementieren, damit es funktioniert?
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Zitat von
Spooky
Entferne method: getResponse
Definiere nur das was du wirklich brauchst in deiner Service Definition.
Super, dankeschön!
Jetzt habe ich nur noch eine andere Frage.
Ich möchte das Ganze gerne über Twig - Templates machen.
Das hat auch alles funktioniert.
Nun möchte ich aber gerne, dass der Benutzer später das Twig-Template (genau wie ein html5 - Template) unter /Templates im Backend kopieren und bearbeiten kann.
Wenn ich ein html5 - Template in das Verzeichnis meiner Erweiterung lege, dann wird dieses unter Templates im Backend angezeigt und kann angelegt werden.
Mein Twig-Template wird zwar richtig verarbeitet, aber es wird im Backend unter /Templates nicht angezeigt.
Muss ich hier noch etwas beachten bzw. übersehe ich etwas in der Dokumentation?
Anhang 25515