2013-07-11 87 views
16

我正在尝试向我的订单添加自定义字段。这时,我发现后波纹管,帮助我建立在我的数据库这样的属性: http://fabrizioballiano.net/2011/11/15/create-a-custom-order-attribute-in-magento/Magento - 为订单添加自定义属性

require_once('app/Mage.php'); 
Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID)); 

$installer = new Mage_Sales_Model_Mysql4_Setup; 
$attribute = array(
    'type'   => 'int', 
    'backend_type' => 'text', 
    'frontend_input' => 'text', 
    'is_user_defined' => true, 
    'label'   => 'My Label', 
    'visible'  => true, 
    'required'  => false, 
    'user_defined' => true, 
    'searchable' => true, 
    'filterable' => true, 
    'comparable' => true, 
    'default'  => 0 
); 
$installer->addAttribute('order', 'special_attribute', $attribute); 
$installer->endSetup(); 

执行上面的代码,并创建多个订单后,我能够遍历所有订单和看每个订单的默认值。

问题是,如何在此字段中存储我想要的数据?我如何检索这些数据?

谢谢!

回答

27

将此添加到config.xml中的gobal范围。然后只需在报价中设置属性 - 它会自动转移到报价中的订单以订购转换过程。

<global> 
... 
    <fieldsets> 
     <sales_convert_quote> 
      <your_special_attribute> 
       <to_order>*</to_order> 
      </your_special_attribute> 
     </sales_convert_quote> 
    </fieldsets> 
... 
</global> 

你可以在任何时候通过神奇的获取/设置器(例如,

$quote->getYourSpecialAttribute() 
$order->getYourSpecialAttribute() 

$quote->setYourSpecialAttribute() 
+1

它的工作!感谢的人:) – MatheusJardimB

+2

我现在的问题是:它的工作只是因为我已经添加了你的XML线或我的也有贡献? – MatheusJardimB

+4

当然......你通过你的安装脚本添加了属性。我给你的xml代码行通过报价自动推送属性来订购转换。因为报价也保存在分贝你也应该在报价中创建属性!只需检查销售订单报价数据表。 –

0

在您添加文本字段到billing.phtml文件并保存在报价与订单表的字段,可以显示的属性。您可以在我的帐户 - >查看订单中显示该字段。在custom.xml fie中进行以下更改。

<?xml version="1.0"?> 
<layout version="0.1.0"> 
    <sales_order_view> 
     <reference name="my.account.wrapper"> 
      <block type="custom/custom_order" name="custom.order" template="custom/order.phtml" after='sales.order.info' /> 
     </reference> 
    </sales_order_view> 
</layout> 

有关详细信息,请参阅博客How to add custom attribute to order in Magento

相关问题