Vkreslování snippet košíku nefunguje
- vanaveno
- Člen | 144
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á
- vanaveno
- Člen | 144
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 | 864
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 | 1264
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ě.