Bonjour tout le monde,

J'aimerais tester le set d'un controller dans un EventListener qui gère l'event kernel.controller.

Voilà mon controller:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
<?php
 
namespace App\Controller;
 
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
 
class WelcomeController extends AbstractController
{
    #[Route('/', name: 'homepage')]
    public function welcome(): Response
    {
        return $this->render('welcome/welcome_app.html.twig');
    }
 
    #[Route('/show/list-fruits', name: 'list_fruits')]
    public function listFruits(): Response
    {
        return $this->render('welcome/show_list_fruits.html.twig');
    }
 
    #[Route('/show/list-vegetables', name: 'list_vegetables')]
    public function listVegetables(): Response
    {
        return $this->render('welcome/show_list_vegetables.html.twig');
    }
}
Puis, mon EventListener:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
<?php
namespace App\EventListener;
 
use Symfony\Component\HttpKernel\Event\ControllerEvent;
 
class ControllerListener
{
    public function onKernelController(ControllerEvent $event): void
    {
        $controller = $event->getController();
 
 
        // Il faudrait que je modifie un peu cette ligne pour que j'ai un callable qui appellerait listVegetables()
        //$vegetableCallable = ['App\Controller\WelcomeController', 'listVegetables'];
 
        //$event->setController($vegetableCallable);
    }
}
Comment faire pour créer un callable qui appellerait du controller WelcomeController, la méthode listVegetables() s'il vous plaît?
En effet, j'aimerais créer ce callable puis ensuite le setter avec

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
$event->setController($vegetableCallable);
Je vous remercie par avance,