# ajaxAmountAction

**URL:** <https://forum.shopware.com/t/ajaxamountaction/39408>\
**Category:** Programmierung\
**Created:** [29. August 2016 um 11:39 UTC](https://forum.shopware.com/t/ajaxamountaction/39408 "2016-08-29T11:39:48Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Beyer](https://avatars.discourse-cdn.com/v4/letter/b/ba9def/32.png) [@Beyer](https://forum.shopware.com/u/Beyer)\
**Post date:** [29. August 2016 um 11:39 UTC](https://forum.shopware.com/t/ajaxamountaction/39408/1 "2016-08-29T11:39:48Z")

</div>

Hallo,

leider schaffe ich es nicht $this-\>View()-\>sBasketAmount&nbsp;in der ajaxAmoutAction in Shopware/Controllers/Frontend/Checkout.php zu überschreiben.

> public function ajaxAmountAction() { Shopware()-\>Plugins()-\>Controller()-\>Json()-\>setPadding(); $amount = $this-\>basket-\>sGetAmount(); $quantity = $this-\>basket-\>sCountBasket(); $this-\>View()-\>sBasketQuantity = $quantity; $this-\>View()-\>sBasketAmount = empty($amount) ? 0 : array\_shift($amount); $this-\>Front()-\>Plugins()-\>ViewRenderer()-\>setNoRender(); $this-\>Response()-\>setBody( json\_encode( [‚amount‘ =\> Shopware()-\>Template()-\>fetch(‚frontend/checkout/ajax\_amount.tpl‘), ‚quantity‘ =\> $quantity] ) ); }

Über das Event&nbsp;

```
 Enlight\_Controller\_Action\_PostDispatchSecure\_Frontend\_Checkout

```

möchte ich der View einen anders berechneten Wert in $subject-\>View()-\>sBasketAmount geben. Leider wird dieser nicht gezogen.

Ich gehe ganz stark davon aus, dass PostDispatch zu spät ist, da in der Action bereits der Response gesetzt wird.&nbsp;

Kann mir da jemand einen anderen Ansatz geben? Und nein, ich kann nicht die Funktion sBasket::sGetAmount hooken, weil ich nichts an der&nbsp;

internen Berechnung von Shopware verändern möchte. Nur die Zahl bei der Ausgabe.

Danke!

---

<div class="post-metadata">

**Author:** ![PhiloGant](https://avatars.discourse-cdn.com/v4/letter/p/f17d59/32.png) [@PhiloGant](https://forum.shopware.com/u/PhiloGant)\
**Post date:** [4. Januar 2017 um 13:17 UTC](https://forum.shopware.com/t/ajaxamountaction/39408/2 "2017-01-04T13:17:14Z")

</div>

Salut,

ich hänge am gleichen Problem, wobei ich einfach nur versucht habe das Template zu überschrieben, bisher ebenfalls ohne Erfolg.

&nbsp;

Hast du da evt. eine Lösung gefunden?

---

<div class="post-metadata">

**Author:** ![Beyer](https://avatars.discourse-cdn.com/v4/letter/b/ba9def/32.png) [@Beyer](https://forum.shopware.com/u/Beyer)\
**Post date:** [9. Januar 2017 um 08:00 UTC](https://forum.shopware.com/t/ajaxamountaction/39408/3 "2017-01-09T08:00:45Z")

</div>

Hallo PhiloGant,

leider habe ich da keine Lösung dafür gefunden.

Mfg

---

<div class="post-metadata">

**Author:** ![ahmadsaad](https://avatars.discourse-cdn.com/v4/letter/a/65b543/32.png) [@ahmadsaad](https://forum.shopware.com/u/ahmadsaad)\
**Post date:** [9. Januar 2017 um 15:41 UTC](https://forum.shopware.com/t/ajaxamountaction/39408/4 "2017-01-09T15:41:34Z")

</div>

Hallo @PhiloGant‍,

```
 ajaxAmountAction render keine Template deshalb ihr können die return wert nicht anderen bei die View Varaibal anderen.

```

die return Wert werde bei respon Boday geschickt&nbsp;

Über das Event&nbsp;

```
 Enlight\_Controller\_Action\_PostDispatchSecure\_Frontend\_Checkout

```

oder

```
 Enlight\_Controller\_Action\_PostDispatch\_Frontend\_Checkout

```

dann kopier&nbsp;einige Zeilen von&nbsp;[ajaxAmountAction](https://github.com/ahmad-saad/shopware/blob/5.2/engine/Shopware/Controllers/Frontend/Checkout.php#L1526)&nbsp;funktion

```
public function onPostDispatchAction(\Enlight_Controller_ActionEventArgs $arguments)
    {

        /**@var $controller \Enlight_Controller_Action */
        $controller = $arguments->getSubject();

        /**
         * @var $request \Enlight_Controller_Request_Request
         */
        $request = $controller->Request();

        /**
         * @var $response \Zend_Controller_Response_Http
         */
        $response = $controller->Response();

        /**
         * @var $view \Enlight_View_Default
         */
        $view = $controller->View();
        
        /// change what you want hier
        $view->sBasketAmount = 100;

        $body = $response->getBody();
        $body = json_decode($body);
        $body['amount'] = Shopware()->Template()->fetch('frontend/checkout/ajax_amount.tpl');
        $body = json_encode($body);
        $response->setBody($body);
}

```

oder etwas wie dies.

VG,

Ahmad
