2010-11-21 4 views
1

Ich habe eine benutzerdefinierte Reihenfolge Attribut hinzugefügt und aktualisiert die Onepage Checkout-Seite. Jetzt versuche ich dieses Attribut dem neuen Bestellformular im Admin hinzuzufügen. Ich versuche, Mage_Adminhtml_Block_Sales_Order_Create_Form_Account zu erweitern und ein neues Feld in der _prepareForm() -Methode hinzuzufügen, ähnlich wie die Gruppen- und E-Mail-Felder hinzugefügt werden.fügen Sie benutzerdefinierte Reihenfolge Attribut der Bestellung von in Magento Admin

Wie bekomme ich das Bestellattribut? Ich habe mehrere Möglichkeiten ausprobiert, aber nichts funktioniert. Dies ist, wie ich das benutzerdefinierte Reihenfolge Attribut in der mysql-Installationsdatei bin erstellen:

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

und das ist, wie ich versuche, das Attribut zu erhalten:

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

oder mit diesem:

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

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

oder dies:

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

Keiner von ihnen funktioniert.

+0

Verlassene Fragen sind ein Schmerz. Wurde Ihr Problem gelöst (mit oder ohne Hilfe von Antworten)? Wenn ja, dann überlege dir bitte, ob du die Frage selbst beantworten kannst. –

Antwort

0

Haben Sie überprüft, dass das Attribut eav_attribute Tabelle in der Datenbank mit der richtigen entity_type_id hinzugefügt wird? (Ich denke, sales_order 11 ist standardmäßig, aber nicht davon ausgehen, dass)

Auf den ersten Blick sieht es aus wie Sie

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

HTH, JD

+0

Ich verwende $ installer-> addAttribute ('order', 'myattr', $ attribute); aber ich denke, es ist in Ordnung, weil ich die Mage_Sales_Model_Mysql4_Setup-Klasse in meinem SQL-Installer verwende. Der Auftrag verwendet eine flache Tabelle, sales_flat_order, daher muss ich wahrscheinlich das Feld anders als die Kunden- oder Adressattribute dem Formular hinzufügen. Gibt es eine Möglichkeit, es zu _prepreForm von Mage_Adminhtml_Block_Sales_Order_Create_Form_Account hinzuzufügen? Vielleicht eine ähnliche Datei, um zu sehen, wie es gemacht werden sollte? – pablo

+0

Sie haben meine erste Frage nicht beantwortet. Ist das Attribut in der Tabelle 'eav_attribute'? Wenn es nicht vorhanden ist, müssen Sie die Art und Weise ändern, wie Sie '$ installer-> adAttribute (...)' –

+0

aufrufen. Das Attribut befindet sich nicht im Feld 'eav_attribute', aber nicht in den Feldern 'sales_order' in der Tabelle 'eav_attribute'. – pablo

0

Verkauf/verwendet verwenden sollten das EAV-Modell zu verwenden, das Attribute unterstützt, die vor 1.4.0 oder nicht sicher waren. Ich denke, jetzt sollten Sie tun:

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

Sie noch das Attribut als statisches Feld

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

Was ich bemerkt, nach viel Versuch und Irrtum war, dass das neue Attribut einen Standard hinzufügen können müssen (Nicht-Null) Wert, um zu arbeiten. Irgendwie ist das Attribut nicht beschreibbar, wenn es einen 'NULL' Wert in der Datenbank hat. Also mit diesem Attribut Optionen Array funktionierte für mich:

Verwandte Themen