Add to your service definition a method call to setTwig with the twig instance

Hallo,

ich bekomme mit Shopware 6.5 in einem Plugin bei einer Controller Action jetzt …

Class MyVendor\Controller\Storefront\MyExampleController does not have twig injected. Add to your service definition a method call to setTwig with the twig instance

Die Fehlermeldung wird dadurch geworfen:
return $this->renderStorefront(‚storefront/page/product-detail/my_example/product-example-form.html.twig‘, [
‚productId‘ => $productId,
‚saveSuccess‘ => 1
]);

Die Annotation Route:
@Route(„/my_vendor/saveexample/{productId}“, name=„frontend.detail.save-example“, methods={„POST“}, defaults={„XmlHttpRequest“=true})

Unter 6.4 ging noch alles einwandfrei. Was muss unter 6.5 geändert werden, damit im Controller das Twig-Template wieder gerendert wird.

Gruss

Du musst in deiner services.xml einen call bei deinem Controller-Service hinzufügen:

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
            <call method="setTwig">
                <argument type="service" id="twig"/>
            </call>
2 „Gefällt mir“

Danke, das wars tatsächlich, war mit 6.4 noch nicht nötig, da war der Service scheinbar automatisch verfügbar

Das sollte hier in die Dhopware 6.5 (latest) Dokumentation aufgenommen werden.

Dokumentation:

<?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>
        <service id="Swag\BasicExample\Storefront\Controller\ExampleController" public="true">
            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>
    </services>
</container>

Solle sein:

<?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>
        <service id="Swag\BasicExample\Storefront\Controller\ExampleController" public="true">
            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
            <call method="setTwig">
                <argument type="service" id="twig"/>
            </call>
        </service>
    </services>
</container>