Problem mit dem Produktattribut, das an das Angebot/Bestellelement angehängt ist
-
16-10-2019 - |
Frage
Ich folge diesem Leitfaden (Produktattribut zum Zitieren von Artikeln und Bestellelement) Aus irgendeinem Grund scheine ich jedoch nicht in der Lage, mein Attribut in meinem Beobachter abzurufen. Mein von mir erstellter Attribut heißt "BudgetCode" und wird dem Produkt zugeordnet, das ich kaufen möchte. In meinem Beobachter versuche ich, dieselbe Theorie wie der obige Beitrag zu verwenden. Mein "BudgetCode" -attribut erscheint jedoch so tief im Schema, dass ich es nicht abrufen kann. Ich tat Zend_Debug::dump($item)
und kann eine massive Ausgabe (zu groß zum Einfügen) mit meinem Budgetcode sehen, das nicht nach unten ist. Ich kann es nicht abrufen.
Observer.php
class Bendart_BudgetCode_Model_Observer extends Varien_Event_Observer
{
public function setBudgetCodeAttribute(Varien_Event_Observer $observer)
{
$item = $observer->getQuoteItem();
Zend_Debug::dump($item);
$product = $observer->getProduct();
$item->setBudgetCode($product->getBudgetCode());
return $this;
}
}
config.xml
<?xml version="1.0"?>
<config>
<modules>
<Bendart_BudgetCode>
<version>0.1.0</version>
</Bendart_BudgetCode>
</modules>
<global>
<fieldsets>
<sales_convert_quote_item>
<budgetcode>
<to_order_item>*</to_order_item>
</budgetcode>
</sales_convert_quote_item>
</fieldsets>
<sales>
<quote>
<item>
<product_attributes>
<budgetcode />
</product_attributes>
</item>
</quote>
</sales>
<events>
<sales_quote_item_set_product>
<observers>
<Bendart_BudgetCode>
<class>Bendart_BudgetCode_Model_Observer</class>
<method>setBudgetCodeAttribute</method>
</Bendart_BudgetCode>
</observers>
</sales_quote_item_set_product>
</events>
</global>
</config>
Jede Hilfe wird geschätzt.
Lösung
Kamelase ist wichtig in den Magic Getters/Setters
Sie erwähnen, dass Ihr Attribut als "BudgetCode" bezeichnet wird, aber Sie verwenden getBudgetCode () - was in ein Attribut namens Budget_Code übersetzt wird.
Wenn Ihr Attribut als BudgetCode bezeichnet wird, müssen Sie GetBudgetCode () verwenden