如何获取网址从Magento的购物车中删除产品?

时间:2011-10-23 19:42:06

标签: php magento

我查看了default / template / checkout / cart.html并找到了这段代码:

        <?php foreach($this->getItems() as $_item): ?>
            <?php echo $this->getItemHtml($_item) ?>
        <?php endforeach ?>

但它的回报超过了我所需要的一切。是否可以通过调用网址从购物车中删除产品?或者在购物车上获得产品的ID? (因为在商店里不一样)

2 个答案:

答案 0 :(得分:18)

似乎这些是问题,我再次提出这个问题。再次(大约14个月前)。现在需要清除一些基础知识。

在Checkout购物车中,主要实体是“报价”(其类别为“Mage_Sales_Model_Quote”)并且它与“目录产品<完全无关” / strong>“entity(其类为”Mage_Catalog_Model_Product“)。因此,产品有自己的唯一(数字)ID,但当它们被添加到购物车时,它们的ID在购物车页面中不再相关(产品URL除外,因为用户可能想要查看产品详细信息)页面再次)。

在Checkout Cart页面中,可用的ID特别是在那里添加的每个项目的Quote Item ID,Checkout Cart本身有一个Quote ID,这是在此期间添加到Cart的所有项目的父项特别结帐会议。

此报价详情可在数据库表“sales_flat_quote”中找到,其项目可在“sales_flat_quote_items”中找到。

现在回到问题,你看到的视图页面是“default/template/checkout/cart.phtml”(没有扩展名为“html”的网页,它应为“phtml” )。这是整个购物车的视图页面。由于您对这些项目感兴趣,因此您应该查看“default/template/checkout/cart/item/default.phtml”。它引用的Block类是“Mage_Checkout_Block_Cart_Item_Renderer”。此PHTML页面适用于每个项目,因此您可以在此页面中为每个项目执行任何操作。

要从购物车中删除产品,您需要知道该产品的报价项目ID,并写下以下声明: -

$this->getUrl('checkout/cart/delete', array('id' => 'xxxx'));

其中xxxx指的是待删除产品的报价项ID。

要从购物车中删除产品,请在Checkout Cart页面中,在“default/template/checkout/cart/item/default.phtml”中调用以下语句: -

$this->getDeleteUrl();

当此声明被执行时,它将自动从内部接收该产品的报价项目ID(这是Magento的美丽)。

要从购物车中获取产品ID ,请在Checkout Cart页面中,在“default/template/checkout/cart/item/default.phtml”中调用以下语句: -

$this->getProduct()->getId();

方法“getProduct()”将返回&amp;加载Product的Model对象(包含所有细节),下一个方法“getId()”将使用它来获取该Product的ID。

希望它有所帮助。

答案 1 :(得分:1)

要获取返回URL以及我所做的是:

在Block

protected function getDeleteUrl($item)
{
    $params = array(
        'id'=>$item->getId(),
        Mage_Core_Controller_Front_Action::PARAM_NAME_URL_ENCODED => Mage::helper('core')->urlEncode($this->getUrl('checkout/cart'))
    );
    return $this->getUrl('checkout/cart/delete', $params);
}

在PHTML中

<?php foreach($this->getItems() as $_item): ?>
    <?php echo $this->getDeleteUrl($_item) ?>
<?php endforeach; ?>