2011-10-23 64 views
2

我看着缺省的/模板/结算/ cart.html,发现这个代码:如何获取网址从Magento中删除产品?

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

但它返回比所有我需要更多。有什么方法可以调用网址从购物车中删除产品?或者让产品的ID在购物车上? (因为它在商店是不一样的)

回答

18

看来,这些都是问题,我再次询问&(大约14个月前)。现在需要清除一些基础知识。

在结帐车,其主要实体是“报价”(它的类是“Mage_Sales_Model_Quote‘),它是不是在所有有关’目录产品”实体(它的类是“Mage_Catalog_Model_Product”) 。因此,产品具有自己的唯一(数字)ID,但是当它们被添加到购物车时,它们的ID在购物车页面中不再相关(产品URL除外),因为用户可能想要查看产品详细信息页面)。

在结帐购物车页面中,可用的ID具体为每个添加的商品的报价商品ID,并且结算车本身具有报价ID,该报价ID是添加到购物车的所有商品的父级特定的结帐会话。

此报价详细资料可在数据库表“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页面适用于每个项目,因此无论您需要为每个项目做什么,都可以在此页面中完成。

从推车删除产品,你需要知道该产品的报价项目编号,并写如下语句: -

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

其中xxxx指的是要被删除的产品的报价单项目ID。

从推车取出产品,在结帐的购物车页面,您需要调用下面的语句中的“default/template/checkout/cart/item/default.phtml”: -

$this->getDeleteUrl(); 

当该语句将得到执行,这将需要从该产品的内部报价产品ID自动(这是Magento的美丽)。

从推车获得产品ID,在结帐的购物车页面,您需要调用下面的语句中的“default/template/checkout/cart/item/default.phtml‘: -

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

的方法’getProduct()”将返回&负荷该产品的Model对象(具有所有细节),下一个方法“getId()”将使用它来获取该产品的ID。

希望它有帮助。

+0

哇!谢谢! :-D – Hbug

+1

@Diógenes - 欢迎和快乐编码! –

+1

@KnowledgeCraving非常感谢。你解决了我的问题。 – Sohail

1

要获得回报的网址,以及我所做的是:

在块

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; ?> 
相关问题