Magento2 Magento 2:如何生成添加到购物车URL

Magento2 Magento 2:如何生成添加到购物车URL,magento2,Magento2,我在主页上循环一些特定的产品,但无法在magento 2中生成添加到购物车的URL 如何在循环中显示产品时生成“添加到购物车”URL。使用以下命令在magento2中生成“添加到购物车”URL: $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $listBlock = $objectManager->get('\Magento\Catalog\Block\Product\ListProduct')

我在主页上循环一些特定的产品,但无法在magento 2中生成添加到购物车的URL


如何在循环中显示产品时生成“添加到购物车”URL。

使用以下命令在magento2中生成“添加到购物车”URL:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();

$listBlock = $objectManager->get('\Magento\Catalog\Block\Product\ListProduct');

$addToCartUrl =  $listBlock->getAddToCartUrl($product);

使用以下命令在magento2中生成“添加到购物车”URL:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();

$listBlock = $objectManager->get('\Magento\Catalog\Block\Product\ListProduct');

$addToCartUrl =  $listBlock->getAddToCartUrl($product);

使用表单键将按钮代码添加到表单中。。它会起作用的

$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>

使用表单键将按钮代码添加到表单中。。它会起作用的

$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>

我知道这已经是一年前的事了,但由于我刚刚完成了要求的工作,我想我可以发布我的解决方案来帮助其他人

其他答案也适用,但仅适用于简单产品,不需要进一步输入,例如选择选项。使用getAddToCartUrl时,Magento首先检查产品是否需要选择任何选项;如果是这样,那么它只需将URL提供给产品页面即可

要跳过所有这些检查并直接获取“添加到购物车”URL,请改用Magento\Checkout\Helper\cart Helper。如果您在.phtml文件中,则只需调用$this->helper:

从那里,您可以通过getAddUrl生成添加到购物车的URL,确保将product对象作为参数传递:

echo $cartHelper->getAddUrl($product)

要使其完全工作,您必须为表单键设置一个隐藏字段,如其他答案中所述,并且如果所述产品具有强制性选项可供选择,例如可配置产品,则确保您也包括这些字段,否则您将被重定向到产品页本身,带有一条消息,通知用户需要选项。

我知道这已经是一年前的事了,但由于我刚刚完成了请求,我想我可以发布我的解决方案来帮助其他人

其他答案也适用,但仅适用于简单产品,不需要进一步输入,例如选择选项。使用getAddToCartUrl时,Magento首先检查产品是否需要选择任何选项;如果是这样,那么它只需将URL提供给产品页面即可

要跳过所有这些检查并直接获取“添加到购物车”URL,请改用Magento\Checkout\Helper\cart Helper。如果您在.phtml文件中,则只需调用$this->helper:

从那里,您可以通过getAddUrl生成添加到购物车的URL,确保将product对象作为参数传递:

echo $cartHelper->getAddUrl($product)

要使其完全工作,您必须为表单键设置一个隐藏字段,如其他答案中所述,并且如果所述产品具有强制性选项可供选择,例如可配置产品,则确保您也包括这些字段,否则您将被重定向到产品页本身,带有一条消息,通知用户需要选项。

最好的解决方案是使用

$cartHelper = $this->helper('Magento\Checkout\Helper\Cart');
然后呢

echo $cartHelper->getAddUrl($product);
每次都会添加到购物车URL
对于简单的产品,对于具有自定义选项的简单产品等,最好的解决方案是使用

$cartHelper = $this->helper('Magento\Checkout\Helper\Cart');
然后呢

echo $cartHelper->getAddUrl($product);
每次都会添加到购物车URL
对于简单产品,对于具有自定义选项等的简单产品,您可以通过以下代码生成“添加到购物车url”:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$listBlock = $objectManager->get('\Magento\Catalog\Block\Product\ListProduct');
$addToCartUrl =  $listBlock->getAddToCartUrl($_product);

您可以通过以下代码生成“添加到购物车url”:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$listBlock = $objectManager->get('\Magento\Catalog\Block\Product\ListProduct');
$addToCartUrl =  $listBlock->getAddToCartUrl($_product);

它会生成URL,但当我单击此链接时,它会将我带到购物车,而不是物品。您的购物车中没有商品。Ye me我也是。我现在要寻找解决方案。您找到解决方案了吗?不应使用对象管理器-在列表页面上,此代码重定向到可配置产品的产品视图页面,并适用于简单产品。它生成URL,但当我单击此链接时,它会将我带到不带商品的购物车。您的购物车中没有商品。Ye me我也是。我现在要寻找解决方案。您找到解决方案了吗?不应使用对象管理器-在列表页上,此代码重定向到产品视图页,用于可配置产品,适用于简单产品。我喜欢此建议,因为使用Magento\Checkout\Helper\Cart也可以在控制器或模型中完成,而不仅仅是在块或模板中。这应该是IMO接受的答案。我不确定我是否理解这个解决方案。如何定义$product?我喜欢这个建议,因为使用Magento\Checkout\Helper\Cart也可以在控制器或模型中完成,而不仅仅是在块或模板中。这应该是IMO接受的答案。我不确定我是否理解这个解决方案。如何定义$product?