2013-07-15 50 views
0

我試圖將字符串ABC附加到添加到購物車中的每件商品的名稱。這應該顯示在購物車/結帳,並以編程方式訪問。修改購物車中商品的名稱

到目前爲止,我已經超負荷Mage_Checkout_CartController與我的自定義ABC_DEF_CartController這樣:

<frontend> 
    <routers> 
     <checkout> 
      <args> 
       <modules> 
        <ABC_DEF before='Mage_Checkout'>ABC_DEF</ABC_DEF> 
       </modules> 
      </args> 
     </checkout> 
    </routers> 
</frontend> 

CartController.php overloades addAction()

public function addAction(){ 
    //prepare 
    $cart = $this->_getCart(); 
    $params = $this->getRequest()->getParams(); 
    $params['qty']=1; 


    try{ 
     $product = $this->_initProduct(); 
     $product->setData('qty',1); 

     if(!$product){ 
      //TODO product not found 
      return; 
     } 

     $product->setData('name',$product->getName()."ABC"); 
     $cart->addProduct($product,$params); 
     $cart->save(); 

     $this->_getSession()->setCartWasUpdated(true); 
     Mage::dispatchEvent('checkout_cart_add_product_complete', 
       array('product' => $product, 'request' => $this->getRequest(), 'response' => $this->getResponse()) 
      ); 
    } catch (Exception $e) { 
     //TODO 
     Mage::logException($e); 
    } 

按照我的理解,所有的產品基本信息,從某處重新從數據庫加載,但我無法確定在哪裏或如何進行更改。提前致謝。

回答

1

我想你最好勾住事件sales_quote_item_set_product。此事件分發於Mage_Sales_Model_Quote_Item::setProduct()
此前分派事件有這一行:

->setName($product->getName()) 

,所以我認爲你可以在我提到的事件的自定義觀察者更改名稱。
事件接收當前報價項目和分配給它的產品作爲參數。

+0

謝謝,解決了這個問題;) –

相關問題