Как добавить товар в корзину?Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как добавить товар в корзину?

Сообщение Anonymous »

TL;DR: как создать и добавить LineItem из существующего продукта в корзину в плагине?
Я пытаюсь написать Плагин для добавления продукта в корзину, если его там еще нет, например. чтобы всегда иметь его в корзине (плата за Paypal, ничего не стоит, если метод выставления счетов не является Paypal, а в противном случае - комиссия Paypal).
У меня есть подписчик, прослушивающий событие AfterLineItemAddedEvent, успешно сработавшее на этом событие, так что никаких проблем нет. Это мой код:

Код: Выделить всё

public function onItemAdded(AfterLineItemAddedEvent $event) {
//$cart = $event->getCart();
$cart = $this->cartservice->getCart($event->getCart()->getToken(), $event->getSalesChannelContext());

if ($cart->getLineItems()->filter(function (LineItem $item) {
if ($item->getPayload()['productNumber'] === "PP")
return $item;
})->count() !== 0)
return;

$criteria = new Criteria();
$criteria->addFilter(new EqualsFilter('productNumber', 'PP'));
$product = $this->productRepository->search($criteria, $event->getContext())->first();

$paypalFeeLineItem = (new LineItem('paypalfee', LineItem::PRODUCT_LINE_ITEM_TYPE, $product->getId(), 1))
->setRemovable(false)
->setStackable(false);

//$cart->add($paypalFeeLineItem);
//$this->persister->save($cart, $event->getSalesChannelContext());
$this->cartservice->add($cart, $paypalFeeLineItem, $event->getSalesChannelContext());
}
Это приводит к бесконечному циклу, поскольку cartservice->add запускает больше событий AfterLineItemAddedEvents. Если я использую закомментированные методы (например, использование персистера с корзиной событий, а не службы корзины), это не запускает события и не приводит к тому, что мой продукт находится в корзине, но моя корзина в браузере показывает «Товар добавлен успешно» ( обычный продукт, который я добавил) И «продукт не найден» (вероятно, моя попытка PayPalFee) в верхней части корзины.
-> Я думаю, это означает, что моя проблема либо в том, что LineItem добавлено не правильно, или что он построен неправильно.
Итак, как мне сделать это правильно?

Подробнее здесь: https://stackoverflow.com/questions/793 ... -to-a-cart
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»