Neu Shop 5.2, Routing, HOOK_ROUTER_PRE_DISPATCH, Beispiel

mvh

Sehr aktives Mitglied
26. Oktober 2011
1.222
464
Moin an Alle,

Wir erstellen ein neues Plugin mit Routingfunktionalität, damit wir auf Artikelliste für Fahrzeugmodelle umleiten können.

Unsere Frage: wie sollte der Code für HOOK_ROUTER_PRE_DISPATCH für einen MyRouterController extends ProductListController aussehen ?
Ist es überhaupt möglich ? oder müssen wir letztendlich new ProductListController benutzen ?

Und wenn wir den $router = $args['router] verwenden, wie greifen wir auf RouteGroup, damit wir mit ->get oder ->post eigene Routen definieren können.
Anscheinend geht es nur mit $router->addRoute

Wir brauchen also ein gutes Beispiel
Unter GitLab haben wir so etwas gefunden:
PHP:
public function boot(Dispatcher $dispatcher): void
    {
        parent::boot($dispatcher);
        $dispatcher->hookInto(\HOOK_ROUTER_PRE_DISPATCH, function ($args) {
            $config = Shopsetting::getInstance()->getAll();
            // config array misused - yout could also set the plugin instance
            $config['link'] = $this->getPlugin()->getLinks()->getLinks()->first();
            /** @var Router $router */
            $router         = $args['router'];
            $controller     = new APIController(
                $this->getDB(),
                $this->getCache(),
                $router->getState(),
                $config,
                Shop::Container()->getAlertService()
            );
            $authMiddleware = new APIAuthMiddleware();
            //@see https://route.thephpleague.com/5.x/routes/
            $router->addRoute('tmrapi[/{id:\d+}]', [$controller, 'show']);
            $router->addRoute('tmrapi/{id:\d+}', [$controller, 'delete'], 'tmrapiDelete', ['DELETE'], $authMiddleware);
            $router->addRoute('tmrapi/{id:\d+}', [$controller, 'update'], 'tmrapiCreate', ['PUT']);
            $router->addRoute('tmrapi', [$controller, 'create'], 'tmrapiCreate', ['POST']);
            $router->addRoute('tmrapitest[/{slug}]', [$controller, 'getResponse'], 'tmaItemList');
        });
    }
 

Ähnliche Themen