# Storefront: User cart überschreiben (Link zu einem Cart)

**URL:** <https://forum.shopware.com/t/storefront-user-cart-uberschreiben-link-zu-einem-cart/72214>\
**Category:** Programmierung\
**Created:** [20. Januar 2021 um 09:53 UTC](https://forum.shopware.com/t/storefront-user-cart-uberschreiben-link-zu-einem-cart/72214 "2021-01-20T09:53:01Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Dafen](https://avatars.discourse-cdn.com/v4/letter/d/90ced4/32.png) [@Dafen](https://forum.shopware.com/u/Dafen)\
**Post date:** [20. Januar 2021 um 09:53 UTC](https://forum.shopware.com/t/storefront-user-cart-uberschreiben-link-zu-einem-cart/72214/1 "2021-01-20T09:53:01Z")

</div>

Hi zusammen,

ich möchte Carts, die wir über die Store API erstellt haben per Link an User verschicken. Die Store API gibt uns dabei den Token zurück, über den der Warenkorb identifiziert wird.

(Wir erstellen automatisiert Carts, die Links werden dann verschickt oder verteilt und der Kunde soll nur noch seine Adresse / Zahlungsdetails angeben und die Bestellung prüfen, aber keine Product-Discovery mehr machen.)

Ich habe nun ein Plugin erstellt, welche eine neue Route definiert und dieses Token entgegen nimmt. Also: /my-company/cart/cart-token

Das klappt bisher wunderbar, ich kann den entsprechenden Cart und den des Users&nbsp;laden:

```
/**
* @Route("/my-company/cart/{id}", name="frontend.my-company.cart-link", methods={"GET"})
*/
public function cartLink(Request $request, SalesChannelContext $context) {
  /** @var Cart $cart */
  $cart = $this->cartService->getCart(
    $request->get('id'),
    $context
  );
  $userCart = $this->cartService->getCart($context->getToken(), $context);

  // override $userCart with $cart or create new cart and clone line items, discounts etc. into it?

  return $this->forwardToRoute('frontend.checkout.cart.page');
}

```

&nbsp;Ich würde gerne den Cart in der Session des Users mit dem Cart aus dem tokes aus dem link ersetzen. (Falls der User Artikel im Warenkob hat, wären diese dann weg) Oder, falls das nicht geht, den $userCart leeren und dann line items, Discounts,Sshipping etc, „rüberkopieren“

Könnt ihr mir da weiterhelfen? Was wäre der richtige Ansatz hier?

&nbsp;

Beste Grüße aus Münster

Nick

---

<div class="post-metadata">

**Author:** ![Dafen](https://avatars.discourse-cdn.com/v4/letter/d/90ced4/32.png) [@Dafen](https://forum.shopware.com/u/Dafen)\
**Post date:** [25. Januar 2021 um 10:40 UTC](https://forum.shopware.com/t/storefront-user-cart-uberschreiben-link-zu-einem-cart/72214/2 "2021-01-25T10:40:16Z")

</div>

Ist ja leider relaiv&nbsp;ruhig hier, die Lösung war denkbar einfach, trotzdem habe ich eine ganze Weile gesucht, vielleicht hilft es ja in Zukunft jemandem:

```
  /**
   * @Route("/my-company/cart/{id}", name="frontend.my-company.cart-link", methods={"GET"})
   * @param Request $request
   * @param SalesChannelContext $context
   * @return RedirectResponse
   */
  public function cartLink(Request $request, SalesChannelContext $context) {
    /** @var Cart $cart */
    $cart = $this->cartService->getCart(
      $request->get('id'),
      $context
    );

    /** @var Session $session */
    $session = $request->getSession();
    $session->set(PlatformRequest::HEADER_CONTEXT_TOKEN, $cart->getToken());

    $this->cartService->setCart($cart);

    // return $this->forwardToRoute('frontend.checkout.cart.page');
    return $this->redirectToRoute('frontend.checkout.cart.page');
 }

```

Grüße!
