# Zugriff auf Versandkosten im Warenkorb

**URL:** <https://forum.shopware.com/t/zugriff-auf-versandkosten-im-warenkorb/21709>\
**Category:** Shopware 3.5\
**Tags:** programming\
**Created:** [4. August 2014 um 16:54 UTC](https://forum.shopware.com/t/zugriff-auf-versandkosten-im-warenkorb/21709 "2014-08-04T16:54:00Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Kiepe](https://avatars.discourse-cdn.com/v4/letter/k/73ab20/32.png) [@Kiepe](https://forum.shopware.com/u/Kiepe)\
**Post date:** [4. August 2014 um 16:54 UTC](https://forum.shopware.com/t/zugriff-auf-versandkosten-im-warenkorb/21709/1 "2014-08-04T16:54:00Z")

</div>

Hallo zusammen, ich bräuchte Hilfe beim Zugriff auf die Versandkosten. Wenn der Warenkorb aufgerufen wird, wird bereits eine XML für eine spätere Verwendung zusammen gestellt. Das funktioniert auch soweit. Für den Zugriff auf die Versandkosten habe ich folgenden Thread gefunden: [basket auf allen Seiten](http://forum.shopware.de/programmierung-f13/basket-auf-allen-seiten-t20-10.html#p8474) Der Aufruf in meinem Plugin sieht so aus: `private function registerEvents() { $this-\>subscribeEvent('Enlight\_Controller\_Action\_Frontend\_Checkout\_Cart', 'onPostDispatchCart');}` In der Funktion ‚onPostDispatchCart‘ wird dann die Versandkostenfunktion aufgerufen: `$ShippingCosts = $this-\>getShippingCosts();` Und die Funktion sieht so aus: `public function getShippingCosts() { // Versandkosten ermitteln $user = array(); $user = Shopware()-\>Modules()-\>Admin()-\>sGetUserData(); $basket = Shopware()-\>Modules()-\>Basket()-\>sGetBasket(); $country = Shopware()-\>Modules()-\>Admin()-\>sGetCountry(Shopware()-\>Session()-\>sCountry ? Shopware()-\>Session()-\>sCountry : 2); $paymentID = Shopware()-\>Session()-\>sPaymentID ? Shopware()-\>Session()-\>sPaymentID : 4; $paymentData = Shopware()-\>Modules()-\>Admin()-\>sGetPaymentMeanById($paymentID, $user); if (empty($country) || empty($paymentData)){ return array('brutto'=\>0, 'netto'=\>0); }else{ return (Shopware()-\>Modules()-\>Admin()-\>sGetShippingcosts($country, $paymentData['surcharge'], $paymentData['surchargestring'])); } }` Das Problem ist, dass die Versandkosten beim Warenkorbaufruf niicht berrechnet werden. Erst beim zweiten Warenkorbaufruf werden die Daten korrekt geliefert. Hätte jemand einen Tipp für mich? Vielleicht weiß auch jemand wie ich in meinem Plugin auf die Templatevariable $sShippingcosts zugreifen kann, da diese ja im Warenkorb zur Verfügung steht. Ich habe dazu leider nichts gefunden, deswegen bin ich den ‚langen‘ Weg gegangen. Gruß

---

<div class="post-metadata">

**Author:** ![kube](https://avatars.discourse-cdn.com/v4/letter/k/b19c9b/32.png) [@kube](https://forum.shopware.com/u/kube)\
**Post date:** [5. August 2014 um 06:26 UTC](https://forum.shopware.com/t/zugriff-auf-versandkosten-im-warenkorb/21709/2 "2014-08-05T06:26:31Z")

</div>

Hi, versuche es damit:`$this-\>subscribeEvent( 'sAdmin::sGetPremiumShippingcosts::after', 'myShippingcostsFunction' );`

---

<div class="post-metadata">

**Author:** ![kube](https://avatars.discourse-cdn.com/v4/letter/k/b19c9b/32.png) [@kube](https://forum.shopware.com/u/kube)\
**Post date:** [5. August 2014 um 06:58 UTC](https://forum.shopware.com/t/zugriff-auf-versandkosten-im-warenkorb/21709/3 "2014-08-05T06:58:30Z")

</div>

Wenn Du doch auf die Templates-Variable sShippingcosts zugreifen willst: 1. Enlight\_Controller\_Action\_PostDispatch registrieren:`$this-\>subscribeEvent( 'Enlight\_Controller\_Action\_PostDispatch', 'onPostDispatchFrontend' );` 2. Dann Deine onPostDispatchFrontend Funktion:`public function onPostDispatchFrontend(Enlight\_Event\_EventArgs $args) { $controller = $args-\>getSubject(); $request = $controller-\>Request(); $response = $controller-\>Response(); $view = $controller-\>View(); if(!$request-\>isDispatched() || $response-\>isException() || !$view-\>hasTemplate() || $request-\>getModuleName() != 'frontend') { return; } switch($args-\>getRequest()-\>getActionName()) { case 'cart': case 'confirm': // Hier ist die: $view-\>sShippingcosts ... break; ... } }`

---

<div class="post-metadata">

**Author:** ![Kiepe](https://avatars.discourse-cdn.com/v4/letter/k/73ab20/32.png) [@Kiepe](https://forum.shopware.com/u/Kiepe)\
**Post date:** [5. August 2014 um 11:40 UTC](https://forum.shopware.com/t/zugriff-auf-versandkosten-im-warenkorb/21709/4 "2014-08-05T11:40:44Z")

</div>

Danke. Ich habe es jetzt so gemacht: `$this-\>subscribeEvent('Enlight\_Controller\_Action\_PostDispatch\_Frontend', 'onPostDispatchCart');` und die Abfrage ob es der Cart ist mit in die Prüfung mitrein: `if (!$request-\>isDispatched() || $response-\>isException() || !$view-\>hasTemplate() || $arguments-\>getRequest()-\>getActionName() != 'cart') { return; }` Nur zum Verständniss: Könnte ich diese Lösung, denn aus einem anderen Event aufrufen? [quote=“kube”]`$this-\>subscribeEvent( 'sAdmin::sGetPremiumShippingcosts::after', 'myShippingcostsFunction' );`[/quote] Oder müsste ich meine komplette Funktion (also die Zusammenstellung der XML) in dieses Event packe? Grüße

---

<div class="post-metadata">

**Author:** ![kube](https://avatars.discourse-cdn.com/v4/letter/k/b19c9b/32.png) [@kube](https://forum.shopware.com/u/kube)\
**Post date:** [5. August 2014 um 11:48 UTC](https://forum.shopware.com/t/zugriff-auf-versandkosten-im-warenkorb/21709/5 "2014-08-05T11:48:06Z")

</div>

Probiere es, Deine Logik komplett in deine sGetPremiumShippingcosts-Evet-Funktion zu packen, denn das ist die Funktion, die überall die Versandkosten zurück liefert. Oder gibt es irgendwelche konkreten Probleme?

---

<div class="post-metadata">

**Author:** ![Kiepe](https://avatars.discourse-cdn.com/v4/letter/k/73ab20/32.png) [@Kiepe](https://forum.shopware.com/u/Kiepe)\
**Post date:** [5. August 2014 um 12:45 UTC](https://forum.shopware.com/t/zugriff-auf-versandkosten-im-warenkorb/21709/6 "2014-08-05T12:45:51Z")

</div>

Keine konkreten Probleme. Mir ging’s nur darum, die Versandkostenberechnung in eine eigene Funktion auszulagern um das ganze übersichtlicher zu halten.
