Ergebnis 1 bis 4 von 4

Thema: Contao 4.9 - Backend Routing - Constructor Problem (Too few arguments)

  1. #1
    Gast
    Registriert seit
    25.03.2020.
    Beiträge
    5

    Standard Contao 4.9 - Backend Routing - Constructor Problem (Too few arguments)

    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.

  2. #2
    Gast
    Registriert seit
    25.03.2020.
    Beiträge
    5

    Standard

    @Moderatoren: Noch eine Anmerkung

    Mir ist gerade aufgefallen, dass ich auf diesem Laptop noch auf einem anderen Account angemeldet war.
    Mein neuer Account ist Fonjensi.

    Falls hier keine multiplen Accounts erlaubt sein sollten, so kann dieser entfernt werden.
    Ich hatte um diesen Account vergessen, weil es ein alter Laptop ist, an dem ich selten arbeite.

  3. #3
    Gast
    Registriert seit
    25.03.2020.
    Beiträge
    5

    Standard

    Lösung ist gefunden.

    Ich hatte meine Services über die listener.yml eingebunden und nicht über die services.yml

    So gab es zwar keinen Fehler, dass diese nicht vorhanden seien, aber irgendwie hatte der Constructor dann ein Problem mit ihnen.

    So funktioniert es nun.

  4. #4
    Contao-Nutzer
    Registriert seit
    07.12.2019.
    Beiträge
    147

    Standard

    Verschoben.
    Geändert von Fonjensi (04.06.2020 um 18:42 Uhr)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •