gpt4 book ai didi

progressive-web-apps - 商店软件 PWA : Disable buying Product before it is Released

转载 作者:行者123 更新时间:2023-12-05 01:49:21 24 4
gpt4 key购买 nike

有没有办法禁止在发布日期之前购买产品。

我们为产品添加了发布日期,该产品也有可用库存。通过这样做,可以将产品添加到购物车并购买。即使发布日期仍然在未来。原因是当到达发布日期(时间)时,产品应该自动可用,而不需要更新库存或任何东西。也不能禁用该产品,因为它应该显示为即将推出。

问题是关于如何在 shopware-pwa 设置中禁用它,不应允许商店将产品添加到图表中,也不允许在发布日期之前出售它们。仅在 UI 端禁用此功能并不能解决问题,因为机器人/脚本仍然可以通过调用 API 来完成。

我没有找到这方面的设置。是否需要更新店铺逻辑?

最佳答案

所以我快速浏览了一下,也没有在 /store-api/checkout/cart/line-item 路径中找到任何对 releaseDate 的引用。
但您可以做的是向 BeforeLineItemAddedEvent 添加一个订阅者,然后自己在那里进行检查。如果尚未达到产品的发布日期,您会想在此处抛出异常。以下是此类订阅者的一个小示例:

class ReleaseDateSubscriber implements EventSubscriberInterface
{
private EntityRepositoryInterface $productRepository;

public function __construct(EntityRepositoryInterface $productRepository)
{
$this->productRepository = $productRepository;
}

public static function getSubscribedEvents(): array
{
return [
BeforeLineItemAddedEvent::class => 'onLineItemAdded'
];
}

public function onLineItemAdded(BeforeLineItemAddedEvent $event): void
{
$lineItem = $event->getLineItem();
$productId = $lineItem->getId();
$context = $event->getContext();

/** @var ProductEntity $product */
$product = $this->productRepository->search(new Criteria([$productId]), $context)->first();

$releaseDate = $product->getReleaseDate();
// Do what you want with the release date
$releaseDateReached = true;

if(!$releaseDateReached){
throw new ProductNotReleasedException();
}
}
}

对于 UX,如果产品尚未发布,隐藏“添加到购物车”按钮显然会更好,但你已经提到了这一点,所以我想你可以帮助自己。

关于progressive-web-apps - 商店软件 PWA : Disable buying Product before it is Released,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74206033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com