Hallo Community,
ich versuche mich gerade an dem Backend-Routing in den Developer-Guides.
Das Ganze hat auch ganz gut funktioniert, mit einem kleinen Fehler, den ich zwar umgehen, aber nicht beheben konnte.
In meiner BackendController.php steht folgendes:
PHP-Code:
// src/Controller/BackendController.php
namespace Fnjs\Test\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Response;
use Twig\Environment as TwigEnvironment;
/**
* @Route("/contao/my-backend-route",
* name=BackendController::class,
* defaults={
* "_scope" = "backend",
* "_token_check" = true,
* "_backend_module" = "my-module"
* }
* )
*/
class BackendController extends AbstractController
{
private $twig;
public function __construct(TwigEnvironment $twig)
{
$this->twig = $twig;
}
public function __invoke()
{
return new Response($this->twig->render(
'my_backend_route.html.twig',
[]
));
}
}
Im Errorlog kommt folgendes an:
Code:
[2020-06-02 23:51:36] request.INFO: Matched route "Fnjs\Test\Controller\BackendController". {"route":"Fnjs\\Test\\Controller\\BackendController","route_parameters":{"_route":"Fnjs\\Test\\Controller\\BackendController","_scope":"backend","_token_check":true,"_backend_module":"my-module","_controller":"Fnjs\\Test\\Controller\\BackendController"},"request_uri":"https://domain.tld/contao/my-backend-route","method":"GET"} []
[2020-06-02 23:51:36] request.CRITICAL: Uncaught PHP Exception ArgumentCountError: "Too few arguments to function Fnjs\Test\Controller\BackendController::__construct(), 0 passed in domain.tld/contao49/var/cache/prod/ContainerC1spTpy/getBackendController2Service.php on line 13 and exactly 1 expected" at domain.tld/contao49/bundles/fnjs/test/src/Controller/BackendController.php line 24 {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalThrowableError(code: 0): Too few arguments to function Fnjs\\Test\\Controller\\BackendController::__construct(), 0 passed in domain.tld/contao49/var/cache/prod/ContainerC1spTpy/getBackendController2Service.php on line 13 and exactly 1 expected at domain.tld/contao49/bundles/fnjs/test/src/Controller/BackendController.php:24)"} []
Hier scheint es ein Problem mit dem Constructor zu geben.
Muss ich hier noch etwas zusätzliches in meiner services.yml / listener.yml angeben?
Derzeit verwende ich autowiring/autoconfigurate.
listener.yml:
Code:
services:
_defaults:
autoconfigure: true
Fnjs\Test\EventListener\GeneratePageListener: ~
Fnjs\Test\Controller\ContentElement\TestElementController: ~
Fnjs\Test\Controller\BackendController: ~
Fnjs\Test\Controller\FrontendExportController: ~
Fnjs\Test\EventListener\BackendMenuListener:
arguments:
- "@router"
- "@request_stack"
tags:
- { name: kernel.event_listener, event: contao.backend_menu_build, method: onBuild, priority: -255 }
services.yml
Code:
# config/services.yaml
services:
# default configuration for services in *this* file
_defaults:
autowire: true # Automatically injects dependencies in your services.
autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
Hat hier vielleicht jemand eine Idee, wie ich die Probleme mit dem Constructor lösen könnte?
Selbige Probleme habe ich auch, wenn ich versuche einen eigenen Service zu injecten.
Ich nehme an, dass ich hier in der services.yml noch etwas definieren muss.
Lesezeichen