2016-04-28 84 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