Vkreslování snippet košíku nefunguje

vanaveno
Člen | 144
+
0
-

Ahojte mám takový problém,:

<?php
    //Add To Cart in Detail Product
    public function createComponentAddToCart(): Form
    {
        $productId = $this->getParameter('productId');
        $this->productItem->productId = $productId;
        $price = $this->priceManager->getPrices()->where('product_id', $productId)->fetch();

        $form = new Form();
        // Choose manufactures
        $form->addInteger('quantity')
            ->setDefaultValue(1)
            ->addRule(Form::MAX, 'Maximální množství je %d.', $price->stock);
        $form->addSubmit('send', 'Koupit');

        $form->onSuccess[] = [$this, 'addToCartSucceeded'];

        return $form;
    }public function addToCartSucceeded(Form $form, $values)
    {
        $product = $this->productManager->getProducts()->get($this->productItem->productId);
        $media = $this->mediaManager->getMediaProduct()->where('product_id', $product->id)->fetch();
        $price = $this->priceManager->getPrices()->where('product_id', $product->id)->fetch();
        $manufacture = $this->manufactureManager->getManufactures()->get($product->manufacture_id);

        $item = new CartItem();
        $item->productId = $product->id;

        $item->title = $product->title;
        $item->manufacture = $manufacture->name;
        $item->itemId = $product->itemId;
        $item->quantity = $values->quantity;
        if ($price->overwrite) {
            $item->pricePerPiece = $this->priceManager->setPriceVat(
                $price->overwrite,
                $price->vat,
                $price->rem,
                $price->autor
            );
        } else {
            $item->pricePerPiece = $this->priceManager->setPriceVat(
                $price->price,
                $price->vat,
                $price->rem,
                $price->autor
            );
        }
        $item->image = $media->file;
        $item->price = $item->quantity * $item->pricePerPiece;
        $currency = $this->priceManager->getPrices()->where('product_id', $product->id)->fetch();
        $item->currency = $currency->currency;

        $rocnik = $this->parameterManager->getParaProduct()->where('product_id = ? AND paraName_id = ?', $product->id, 8)->fetch();
        $item->rocnik = $rocnik->value;

        $this->cartManager->addItem($item->productId, $item);
bdump($this->isAjax());
        if ($this->isAjax()) {
            $this->payload->isModal = true;
            $this->redrawControl("topcart");
        }
    }

/* v šabloně by se měl překreslit */
                    {if $sumary > 0}
                    <a class="w100 ta-center  d-ib  fc-fff  td-none" n:href=":Front:Cart:default $langId">
                        <i class="fas fs-12 fc-eee fa-shopping-basket"></i>

                        <div class="ajax count lh-30 ta-center d-ib bg-orangered fc-fff fs-08 br-100">
                            {snippet topcart}{$sumary}{/snippet}
                        </div>
                    </a>
                    {else}
                    <i class="fas fs-12 fc-eee fa-shopping-basket"></i>
                    {/if}

?>

bdump($this->isAjax()); false

Neche se mi to přepisovat. Mám v košíku

<?php
    public function handleRemoveItem($key)
    {
        $this->cartManager->removeItem($key);
        $this->template->items = $this->cartManager->getItems();
        $this->template->totalQuantity = $this->cartManager->totalQuantity;
        $this->template->totalPrice = $this->cartManager->totalPrice;
        $this->template->currency = $this->cartManager->currency;

        $this->redrawControl('wrapper2');
        $this->redrawControl("modal2");
    }
?>

A tohle mi ajax předává

m.brecher
Generous Backer | 735
+
0
-

@vanaveno

Ahojte mám takový problém,:

Popiš ten problém !

A tohle mi ajax předává

Co ten ajax předává ?

vanaveno
Člen | 144
+
0
-

Jedná se o vkládání produktu do košíku: viz zde http://vinarstvi.mhpb.cz/…cz/bila-vina?…, když vložím produkt do košíku, nepřekresluje se mi horní košík, když potom na něj kliknete a dostanete se do něj, tak tam můžete mazat a ajax funguje, akorát to mazání je přes handle signál, vkládání do košíku je viz výše.

m.brecher napsal(a):

@vanaveno

Ahojte mám takový problém,:

Popiš ten problém !

A tohle mi ajax předává

Co ten ajax předává ?

m.brecher
Generous Backer | 735
+
0
-

Používáš knihovnu Naja pro Nette ajax? V html kódu toho vinařství jsem ji neviděl ;)

m.brecher
Generous Backer | 735
+
0
-

Ahoj, teď jsem si všiml, že v html toho vinařství máš:

<script type="text/javascript" src="http://vinarstvi.mhpb.cz/www/js/nette.ajax.js"></script>

To je myslím ta úplně první ajax knihovna pro Nette.

Nejsem znalec Nette, ale ta stará knihovna už asi fungovat nemá šanci.

@jiripudil před pár lety napsal skvělou a v komunitě hojně využívanou knihovnu pro ajax Naja. Aby odkaz/formulář využil ajax z Naja, musí mít css class=„ajax“, to jsem také v tom html vinařství také neviděl.

Doporučuji použít Naja – je na internetu a @jiripudil zveřejnil i skvělé video na youtube jak Naja použít.

Marek Bartoš
Nette Blogger | 1165
+
+2
-

nette.ajax.js pořád funguje, i když nedostává aktualizace. Je lepší přejít, ale tím to nebude.

Snippety ti nemohou fungovat, když nejde o ajaxový request ($presenter->isAjax() === false). Nastuduj si nejdřív, co po tobě nette.ajax.js nebo naja chtějí, aby proběhl request ajaxově.