2010-11-21 22 views
1

私はカスタム注文属性を追加し、1ページのチェックアウトページを更新しました。 この属性を管理者の新しい注文フォームに追加しようとしています。 私はMage_Adminhtml_Block_Sales_Order_Create_Form_Accountを拡張し、GroupフィールドとEmailフィールドが追加されるのと同様の_prepareForm()メソッドで新しいフィールドを追加しようとしています。magentoからの注文にカスタム注文属性を追加する

注文属性を取得するにはどうすればよいですか? 私はいくつかの方法を試しましたが、何も機能しません。 これは私がMySQLのインストールファイルにカスタムオーダー属性を作成しています方法です:

$attribute = array(
     'type'   => 'int', 
     'label'   => 'myattr', 
     'visible'  => false, 
     'required'  => false, 
     'user_defined' => false, 
     'searchable' => false, 
     'filterable' => false, 
     'comparable' => false, 
); 
$installer->addAttribute('order', 'myattr', $attribute); 

、これは私が属性を取得しようとしている方法です:

$res = Mage::getSingleton('core/resource'); 
$eav = Mage::getModel('eav/config'); 
$attr = $eav->getAttribute('sales/order', 'myattr'); 

またはこれと:

$entityType = Mage::getModel('eav/config')->getEntityType('order'); 
$entityTypeId = $entityType->getEntityTypeId(); 

$attribute = Mage::getResourceModel('eav/entity_attribute_collection') 
       ->setCodeFilter('myattr') 
       ->setEntityTypeFilter($entityTypeId) 
       ->getFirstItem(); 

またはこの:

$order = Mage::getResourceSingleton('sales/order'); 
$myAttr = $order->getAttribute('myattr'); 

いずれも機能しません。

+0

放棄された質問は痛みです。問題は解決しましたか(回答の有無にかかわらず)?もしそうなら、あなた自身で質問に答えてください。 –

答えて

0

属性がentity_type_idのデータベースのeav_attributeテーブルに追加されていることを確認しましたか?一見(私はSALES_ORDERは、デフォルトでは11だと思うが、それを想定していない)

あなたは

$installer->addAttribute('sales/order', 'myattr', $attribute); 

を使用する必要がありますように、それはHTH、使用 JD

+0

私は$ installer-> addAttribute( 'order'、 'myattr'、$ attribute)を使用しています。私はSQLインストーラでMage_Sales_Model_Mysql4_Setupクラスを使用しているので大丈夫だと思います。 Orderはフラットテーブルのsales_flat_orderを使用しているので、おそらく顧客や住所の属性とは異なる方法でフォームにフィールドを追加する必要があります。それをMage_Adminhtml_Block_Sales_Order_Create_Form_Accountの_prepreFormに追加する方法はありますか?どのようにそれを行う必要がありますか似たようなファイルですか? – pablo

+0

あなたは私の最初の質問に答えなかった。 'eav_attribute'テーブルの属性です。存在しない場合は、 '$ installer-> adAttribute(...) 'を呼び出す方法を変更する必要があります。 –

+0

属性はeav_attributeにはありませんが、sales_orderフィールドの中にはeav_attributeテーブルにはありません。 – pablo

0

販売/注文を探します属性をサポートするEAVモデルを使用することは、それが1.4.0以前かどうかは不明です。 私は今あなたがやるべきだと思う:

$installer->getConnection()->addColumn($installer->getTable('sales/order'), 'my_column', 'decimal(12,4)'); 

あなたはまだ多くの試行錯誤が新しい属性がデフォルトを持たなければならないということだった後私が気づいた何

$installer->addAttribute('order', 'my_column', array('type'=>'static')); 
0

静的フィールドとして属性を追加することができます(nullでない)値を使用して作業します。どういうわけか、属性がデータベースに「NULL」値を持つ場合、その属性は書き込み可能ではありません。だからこの属性オプションの配列を使用して私のために働いた:

$attribute = array(
'type'   => 'int', 
'label'   => 'myattr', 
'default'  => 0, 
'visible'  => false, 
'required'  => false, 
'user_defined' => true, 
'searchable' => false, 
'filterable' => false, 
'comparable' => false); 
関連する問題