Magento观察员获得定制价格

时间:2015-03-22 20:40:56

标签: php magento

我使用下面的代码将价格更改为Magento购物车动态。

class Test_Pricecalc_Model_Observer
{
    public function modifyPrice(Varien_Event_Observer $obs)
    {
        // Get the quote item
        $item = $obs->getQuoteItem();
        // Ensure we have the parent item, if it has one
        $item = ( $item->getParentItem() ? $item->getParentItem() : $item );

        // Load the custom price
        $price = $this->_getPriceByItem($item);
        // Set the custom price
        $item->setCustomPrice($price);
        $item->setOriginalCustomPrice($price);
        // Enable super mode on the product.
        $item->getProduct()->setIsSuperMode(true);
    }

    protected function _getPriceByItem(Mage_Sales_Model_Quote_Item $item)
    {
        $price = $price + 10;
        return $price;
    }

    protected function _getRequest()
    {
        return Mage::app()->getRequest();
    }
}

现在有人在选择产品选项后如何从产品详细信息页面获取自定义价格?我希望用这个价格作为我的进一步计算的基准价格。

1 个答案:

答案 0 :(得分:1)

您可以在产品详细信息页面中创建一个隐藏的输入字段,其值等于您的自定义价格。 并且可以在观察者中获得该字段,如:

  $new_price = Mage::app()->getRequest()->getPost('custom_price');

其中' custom_price'是隐藏字段的名称,oberserver中的$ new_price是您的自定义价格。

这是一个例子,我们用它来表示我们的产品价格"添加到购物车": -

class Tech9_Myprice_Model_Observer 
{
public function modifyPrice(Varien_Event_Observer $obs)
{
     // Get the quote item
   $item = $obs->getQuoteItem();
   // Ensure we have the parent item, if it has one
   $item = ( $item->getParentItem() ? $item->getParentItem() : $item );
   // Load the custom price


     $new_price = Mage::app()->getRequest()->getPost('custom_price');
      Mage::log( $new_price);
   $price = $new_price;
   // Set the custom price
   $item->setCustomPrice($price);
   $item->setOriginalCustomPrice($price);
   // Enable super mode on the product.
   $item->getProduct()->setIsSuperMode(true);       
 }
}

此处 Tech9 是我们软件包的名称, Myprice 是我们模块的名称。

我们必须在&#34期间使用我们的自定义价格;添加到购物车"事件。我们为它准备了一个单独的模块,如果您愿意,我们也可以为您提供该软件包。