2011-10-23 95 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; ?> 
相關問題