我想在order_item-table中保存自定义信息.这些信息在购物车中创建.所以我这样做就像在这篇文章中描述的那样:扩展Magento购物车
我安装了该属性
$installer->addAttribute('quote_item', 'final_delivery_time', $settings);
$installer->addAttribute('order_item', 'final_delivery_time', $settings);
Run Code Online (Sandbox Code Playgroud)
在config.xml中声明fieldset
<fieldset>
<sales_convert_quote_item>
<final_delivery_time>
<to_order_item>final_delivery_time</to_order_item>
</final_delivery_time>
</sales_convert_quote_item>
<sales_convert_order_item>
<final_delivery_time>
<to_quote_item>*</to_quote_item>
<to_invoice_item>*</to_invoice_item>
<to_shipment_item>*</to_shipment_item>
<to_cm_item>*</to_cm_item>
</final_delivery_time>
</sales_convert_order_item>
</fieldset>
Run Code Online (Sandbox Code Playgroud)
以及购物车中的一些代码
$oQuote = Mage::getSingleton('checkout/session')->getQuote();
foreach ( $oQuote->getAllItems() as $_item )
{
$orderItemId = $_item->getId();
$_item->setFinalDeliveryTime('some Value');
$_item->save();
}
Run Code Online (Sandbox Code Playgroud)
所以我得到了一个报价,我的字段final_delivery_time在sales_flat_quote_item表中有这个值
在我将订单放入onepage-review之后,我还应该在sales_flat_order_item表中包含此字段,但没有任何内容.在列中'null'.所以我需要保存在订单中的字段的值
我找到了解决方案
它是一个观察者我添加以下代码
config.xml中
...
<events>
<sales_convert_quote_item_to_order_item>
<observers>
<quoteitem_set_custom_data>
<class>DeliveryTime/observer</class>
<method>setCustomDataOnQuoteItem</method>
</quoteitem_set_custom_data>
</observers>
</sales_convert_quote_item_to_order_item>
</events>
...
Run Code Online (Sandbox Code Playgroud)
Observer.php
...
public function setCustomDataOnQuoteItem(Varien_Event_Observer $observer)
{
$quote = Mage::getModel('checkout/cart')->getQuote();
$orderItem = $observer->getOrderItem();
foreach ( $quote->getAllVisibleItems() as $_item )
{
if ($_item->getSku() == $orderItem->getSku())
{
$orderItem->setFinalDeliveryTime($_item->getFinalDeliveryTime());
}
}
}
...
Run Code Online (Sandbox Code Playgroud)
所以一切都保存在订单中
归档时间: |
|
查看次数: |
8687 次 |
最近记录: |