我在主页上循环某些特定产品但无法在magento 2中生成ADD TO CART URL
如何在循环中显示产品时生成添加到CART网址。
答案 0 :(得分:4)
我知道这已经过去了一年,但是由于我已经完成了所要求的工作,我认为我可以发布我的解决方案以帮助他人。
其他答案可行,但仅适用于不需要进一步输入的简单产品(例如选择选项)。使用getAddToCartUrl()
时,Magento首先检查产品是否需要选择任何选项;如果是,那么它只会将URL提供给产品页面。
要跳过所有这些检查并直接获取添加到购物车网址,请改用 Magento \ Checkout \ Helper \ Cart 帮助程序。如果您在.phtml文件中,那么只需拨打$this->helper
:
$cartHelper = $this->helper('Magento\Checkout\Helper\Cart');
从那里,您可以通过getAddUrl()
生成添加到购物车的网址,确保您将产品对象作为参数传递:
echo $cartHelper->getAddUrl($product)
要使其完全正常工作,您必须为其他答案中描述的表单密钥设置隐藏字段,并且如果相关产品具有可供选择的强制选项(例如可配置产品),请确保包括这些字段也是如此,否则您将被重定向到产品页面本身,并显示一条消息,通知用户需要选项。
答案 1 :(得分:3)
使用表单键将您的按钮代码添加到表单中..它将起作用
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$listBlock = $objectManager->get('\Magento\Catalog\Block\Product\ListProduct');
$addToCartUrl = $listBlock->getAddToCartUrl($product);
<form data-role="tocart-form" action="<?php echo $addToCartUrl; ?>" method="post">
<?php echo $block->getBlockHtml('formkey')?>
<button type="submit"
title="Add to Cart"
class="action tocart primary">
<span>Add to Cart</span>
</button>
</form>
答案 2 :(得分:2)
使用以下命令在magento2中生成添加到购物车网址:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$listBlock = $objectManager->get('\Magento\Catalog\Block\Product\ListProduct');
$addToCartUrl = $listBlock->getAddToCartUrl($product);
答案 3 :(得分:1)
优秀的解决方案是使用
$cartHelper = $this->helper('Magento\Checkout\Helper\Cart');
然后是
echo $cartHelper->getAddUrl($product);
这每次都会添加到购物车网址 (对于简单产品,对于具有自定义选项的简单产品,等等)
答案 4 :(得分:0)
您可以通过以下代码生成“添加到购物车”网址:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$listBlock = $objectManager->get('\Magento\Catalog\Block\Product\ListProduct');
$addToCartUrl = $listBlock->getAddToCartUrl($_product);