修改购物车中商品的名称

时间:2013-07-15 10:59:39

标签: php magento-1.7 magento

我正在尝试将字符串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 个答案:

答案 0 :(得分:1)

我认为你最好加入事件sales_quote_item_set_product。此事件将在Mage_Sales_Model_Quote_Item::setProduct()中发送 在派遣活动之前,有这一行:

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

所以我假设您可以在我提到的事件中更改自定义观察者的名称 该事件作为参数接收当前报价项目和分配给它的产品。