2010-03-17 76 views
0

我在銷售/訂單實體上創建了一個簡單的自定義屬性。現在,對於新訂單,訂單號爲空。我看着sales_order表,果然,increment_id是空的......任何人都可以幫助我,我難過?Magento-自定義屬性導致空白訂單號碼

這是我setup.php:

'公共功能getDefaultEntities(){

 return array(
     'order' => array(
      'entity_model'  => 'sales/order', 
      //'attribute_model' => 'catalog/resource_eav_attribute', 
      'table'    => 'sales/order', 
      'attributes'  => array(
      'pr_email_sent'  => array(
        'label'    => 'prEmailSent', 
        'type'    => 'varchar', 
        'default'   => 'false' 
       ), 

      ) 
     ) 
    ); 

}`

這是我的config.xml

<fieldsets> 
      <sales_order> 
       <pr_email_sent><create>1</create><update>1</update></pr_email_sent> 
      </sales_order> 
     </fieldsets> 

謝謝。

回答

0

我解決了這個,放棄我的setup.php文件,並在我的mysql4安裝-0.1.0.php做了以下內容:

<?php 

// file mysql4-install-0.1.0.php 


$installer = $this; 
$setup = new Mage_Eav_Model_Entity_Setup('sales_setup'); 
$installer->startSetup(); 

$setup->addAttribute('order', 'pr_email_sent', array('type' => 'text', 
                'default' => 'false' 
                ) 
        ); 

$installer->endSetup(); 

?> 

就像一個魅力現在。不知道有什麼區別,除了顯而易見的...在Magento缺乏文檔是相當平淡。

0

您的新屬性是否已成功創建?您可以檢查eav_attribute表以查看您的屬性是否已列出。

+0

嘿,謝謝你的迴應。是的,該屬性成功地將它傳遞給eav_attribute表。我也可以在它上面獲取Data()和setData()...它只是訂單號現在爲空。也許我需要在setup.php上設置更多的屬性?這很混亂。 – frank 2010-03-18 04:29:03

0

剛剛碰到這個自己,並設法弄清楚。通過使用getDefaultEntities函數,我們最終覆蓋了eav_entity_type表中的sales_order的increment_model屬性。

似乎會覆蓋increment_model和increment_per_store字段。

很高興看到你明白了使用上述方法。我將自己使用:-)

順便說一句,將提交到Magento的錯誤跟蹤器。

1

我不認爲這是一個錯誤。我後來碰到了同樣的問題。問題在於你沒有在getDefaultEntities()中包含所有必要的信息。你最終這樣做的方式有效,但不是最好的方式。您只是缺少設置訂單數組的幾個部分。這是它應該看起來如何:

public function getDefaultEntities() 
{ 
    return array(
     'order' => array(
      'entity_model' => 'sales/order', 
      'table' => 'sales/order', 
      'increment_model' => 'eav/entity_increment_numeric', 
      'increment_per_store' => true, 
      'backend_prefix' => 'sales_entity/order_attribute_backend', 
      'attributes' => array(
       'pr_email_sent' => array(
        'label' => 'prEmailSent', 
        'type' => 'varchar', 
        'default' => 'false' 
       ) 
      ) 
     ) 
    ); 
}