Wo kommen die Parameter bei Controller Actions her?

Hallo Community,

gleich zur Frage:

Z.B. bei dem Controller “CartLineItemController” gibt es die Action “deleteLineItem”. Die Funtion hinter der Action ist folgedermaßen definiert:

    /**
     * @Route("/checkout/line-item/delete/{id}", name="frontend.checkout.line-item.delete", methods={"POST", "DELETE"}, defaults={"XmlHttpRequest": true})
     */
    public function deleteLineItem(Cart $cart, string $id, Request $request, SalesChannelContext $salesChannelContext): Response
    {
      ...

Wenn ich die Doku richtig verstehe ist “SalesChannelContext” einfach bei jeder Action automatisch “geschenkt”. Bei den restlichen Parametern verstehe ich es aber nicht mehr.

Den Parameter “string $id” gibt es wahrscheinlich deshalb weil “id” im “@Route” definiert ist, richtig? Falls ja, an welcher Stelle muss man den Parameter angeben? Und wo kommen dann noch die “Cart $cart” und “Request $request”  her?

Wäre für Aufklärung sehr dankbar!

Grüße, ruppert

Das sind in Symfony Umwelt ArgumentValueResolver . Du kannst diese im Dependency Injection registrieren, diese können dann die Parameter automatisch reinreichen.

 

SalesChannelContext => platform/SalesChannelContextValueResolver.php at 60ad409864d462b640c77f7206aa78fbd4e3dd23 · shopware/platform · GitHub

Cart => platform/CartValueResolver.php at 60ad409864d462b640c77f7206aa78fbd4e3dd23 · shopware/platform · GitHub

Request => Standardmäßig von Symfony

$id => Kommt aus der Route

1 „Gefällt mir“

Vielen Dank für die Aufklärung!

Könntest du vielleicht noch etwas zu der Reihenfolge der Parameter sagen? Ist Sie durch die „Resolver“ vorgeschrieben, oder kann ich die beliebig in meiner Action-Function wählen?

Grüße, ruppert

Die Reihenfolge ist egal

1 „Gefällt mir“