2016-04-28 153 views
0

我无法在订单中获取和设置自定义属性。按顺序保存自定义属性

我有以下SQL脚本:

<?php 

$installer = $this; 
$installer->startSetup(); 

$setup = new Mage_Eav_Model_Entity_Setup('core_setup'); 

$attribute = array(
    'position'   => 1, 
    'type'    => 'text', 
    'input'    => 'varchar', 
    'label'    => 'My Order Field', 
    'global'   => 1, 
    'visible'   => 1, 
    'required'   => 0, 
    'user_defined'  => 1, 
    'searchable'  => 0, 
    'filterable'  => 0, 
    'comparable'  => 0, 
    'visible_on_front' => 1, 
    'visible_in_advanced_search' => 0, 
    'unique'   => 0, 
    'is_configurable' => 0, 
    'position'   => 1, 
); 

$setup->addAttribute('order', 'my_order_field', $attribute); 

$installer->endSetup(); 

我可以运行此之后看到EAV表的属性。

我已经设置了一个观察者,当一个新的订单已经保存,我也确认正在运行(使用die()语句)时运行。

现在我已经删除了这些死亡的语句,改变了顺序保存代码,以这样的:

$event = $observer->getEvent(); 
$order = $event->getOrder(); 
$order->setMyOrderField('Hello'); 

而且在我的管理后台部分,我添加了一行,来检索数据:

<tr> 
     <td class="label"><label><?php echo Mage::helper('sales')->__('My Order Field') ?></label></td> 
     <td class="value"><strong><?php echo $_order->getMyOrderField(); ?></strong></td> 
    </tr> 

但是,当我通过什么都没有出现新订单时,谁能告诉我我在将数据保存到自定义属性方面做错了什么?

感谢

+0

是在sales_flat_order表中可用的领域? –

回答

0
<?php 

$installer = $this; 
$installer->startSetup(); 

$setup = new Mage_Eav_Model_Entity_Setup('core_setup'); 

$attribute = array(
    'position'   => 1, 
    'type'    => 'text', 
    'input'    => 'varchar', 
    'label'    => 'My Order Field', 
    'global'   => 1, 
    'visible'   => 1, 
    'required'   => 0, 
    'user_defined'  => 1, 
    'searchable'  => 0, 
    'filterable'  => 0, 
    'comparable'  => 0, 
    'visible_on_front' => 1, 
    'visible_in_advanced_search' => 0, 
    'unique'   => 0, 
    'is_configurable' => 0, 
    'position'   => 1, 
); 


$setup->addAttribute('order', 'my_order_field', $attribute); 
$setup->addAttribute('quote', 'my_order_field', $attribute); 

$installer->endSetup(); 

$event = $observer->getEvent(); 
$order = $event->getOrder(); 
$order->setMyOrderField('Hello'); 
$order->save(); 
+0

只有3个字母不是代码,我很肯定你可以做得更好,有点解释你的答案 – nicolallias