Context von twig.extension?

Hallo,

gibt mir das Registrieren eines Services als „twig.extension“ einen Context mit?

Erklärung:
ich habe eine Klasse, die ich von AbstractExtension ableite, um mir eine eigene Twig-Funktion zu erstellen. In einer anderen Klasse habe ich eine Produktsuche gebaut, die aktuell zum Testen noch an den HeaderPageletLoadedEvent subscribed ist.

Nun will ich in meiner Twig Extension Klasse meine Produktsuche instanzieren und eine Methode davon aufrufen, die mir über eine übergebene ID ein Produkt zurückgibt, welches ich dann im Template nutzen kann.

Die Suche passiert bei mir so:
HeaderPageletLoadedSubscriber.php

public function readProductData(Context $context, $productID)
{
        try{
            $product = $this->productRepository->search(new Criteria([$productID]), $context)->first();
            return $product;
        }
        catch(\Exception $e){
            error_log($e->getMessage());
            return null;
        }
}

$context ergibt sich aus:

public static function getSubscribedEvents(): array
 {
        return [
            HeaderPageletLoadedEvent::class => 'onHeaderPageletLoaded'
        ];
}
public function onHeaderPageletLoaded(HeaderPageletLoadedEvent $event)
{
      ...
     $productID = '11jajhaj33najajadasaas'; /* Nur zu Testzwecken */
     $product = $this->readProductData( $event->getContext(), $productID );
       ...
}

Meine services.xml sieht so aus:

<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
    <services>
        <!-- Aktuell nur zu Testzwecken am HeaderPageletLoadedSubscriber subscribed  --> 
        <service id="Bs\TwigGetProduct\Storefront\Pagelet\Header\Subscriber\HeaderPageletLoadedSubscriber">
            <tag name="kernel.event_subscriber"/>
            <argument type="service" id="product.repository"/>
        </service>
        <service id="Bs\TwigGetProduct\Storefront\Pagelet\Header\Subscriber\AddTwigFunction">
            <tag name="twig.extension"/>
            <argument type="service" id="product.repository"/>
        </service>
    </services>
</container>

Jetzt baue ich meine Klasse so um, dass ich sie nicht mehr an ein Event subscribe, sondern in meiner Twig Extension Klasse instanziere und dann die Methode aufrufe, die mir mein Produkt gibt.
Für die Suche fehlt mir aber ein Objekt vom Typ Context , das ich ja vorher durch den HeaderPageletLoadedEvent bekommen habe.

Woher bekomme ich jetzt meinen Context? Stellt mir das Registrieren als twig.extension so einen Context irgendwie?

Hoffe irgendwas davon was verständlich, habe erst gestern Abend das erste mal mit einem Plugin angefangen, zeigt bitte Nachsicht. :rofl:

Lg Alex

Habe es hinbekommen. Ich übergebe der Twig Funktion im Template einfach „context.context“ als Parameter mit.

Jetzt habe ich ein weiteres Problem. Wenn ich zB page.product auf der Produktseite dumpe, zeigt er mir ein SalesChannelProductEntity Objekt an. Ich erhalte aber aktuell ein ProductEntity. Kann ich das irgendwie in ein SalesChannelProductEntity Objekt umwandeln?

Lg