Content eines Category Requests ändern

Hallo Shopware-Community,

folgende Aufgabe gibt es:

  • beim Aufruf einer Category soll der Content einer Category ausgegeben werden
  • die Url soll sich dabei nicht ändern, also kein redirect stattfinden

Folgende Idee zur Umsetzung habe ich probiert:

  • das Event ‚BeforeSendResponseEvent‘ benutzen um den Request abzufangen
  • CategoryId ermitteln per DAL
  • über die Class AbstractCategoryRoute per load() die Category laden
$request = $event->getRequest();
// generiert über eigenen Service
$salesChannelContext =  $this->salesChannelService->createDefaultSalesChannelContext();
$category = $this->categoryRoute->load($categoryId, $request, $salesChannelContext)->getCategory();
    
  • per eigenem Storefrontcontroller die page rendern und als response speichern:
$template = '@Storefront/storefront/page/content/detail.html.twig';
// ruft StorefrontController::renderStorefront mit template und category page auf
$response = $this->customStorefrontController->renderPage($template, $category->getCmsPage());

  • response setzen:
$event->setResponse($response)

Leider klappt es so nicht, ich erhalte folgenden Fehler:

Call to a member function get() on null

AbstractController->get(‚request_stack‘)in platform/src/Storefront/Controller/ StorefrontController.php (line 39) :
$request = $this->get(‚request_stack‘)->getCurrentRequest();

Muss ich meinen Request noch mitteilen, verfolge ich einen falschen Ansatz? Freue mich über Antworten.

Viele Grüße
Henning

Hallo miteinander,

habe es zum laufen bekommen. Hatte einen Typo im meiner config/route.xml. Außerdem hatte der RouteScope in meinem Controller gefehlt.

Danach hab ich nochd en NavigationPageLoader benutzt, um eine Page zu erhalten und konnte den Response damit setzen.

Ich habe mich dabei am errorController von Shopware orientiert.

Viele Grüße

1 „Gefällt mir“