Magento Forum

Mage_Sales_Model_Order erweitern
 
datensurfer
Sr. Member
 
Total Posts:  103
Joined:  2009-07-15
 

Hallo,

ich will das Modul “Sales_Order” mit einem neuen Attribut erweitern und dabei die Datenbank erweitern, Attribut speichern und später ausgeben.

Dazu bin ich nach folgendem Wiki-Tutorial vorgegangen:
http://www.magentocommerce.com/wiki/modules_reference/german/klassen

Unter /local/Asdf/MyModul habe ich unter “Block” ein entsprechenden Block angelegt welcher von adminhtml ableitet.
Dieser wird auch richtig im Backend angezeigt.

Jetzt zum Problem:
Unter /local/Asdf/MyModul/Modell habe ich die Datei “Order.php” angelegt, diese erweitert die Klasse “Mage_Sales_Model_Order”.
Problem ist jetzt diese Datei wird NICHT aufgerufen obwohl in der config.xml definiert! :-(

Da komme ich jetzt nicht weiter, hier der Inhalt der config.xml:

<?xml version="1.0"?>
<config>
<
modules>
<
Asdf_MyModul>
<
version>0.0.1</version>
</
Asdf_MyModul>
</
modules>

<global>
<
blocks>
<
adminhtml>
<
rewrite>
<
sales_order_view_info>Asdf_MyModul_Block_Sales_Order_View_Info</sales_order_view_info>
</
rewrite>
</
adminhtml>
</
blocks>

<
models>
<
MyModul>
<!-- <class>
Asdf_MyModul_Model_Order</class> -->
<
rewrite>
<
sales_order_view_info>Asdf_MyModul_Model_Order</sales_order_view_info>
</
rewrite>
</
MyModul>

<
core>
<
rewrite>
<
sales_order>Asdf_MyModul_Model_Order</sales_order>
</
rewrite>
</
core>
</
models>

<
resources>
<
modulename_write>
<
connection>
<use>
core_write</use>
</
connection>
</
modulename_write>
<
modulename_read>
<
connection>
<use>
core_read</use>
</
connection>
</
modulename_read>
</
resources>
</global>
</
config>

Jemand eine idee wo das Problem sein könnte?

 
Magento Community Magento Community
Magento Community
Magento Community
 
team_in_medias
Sr. Member
 
Avatar
Total Posts:  113
Joined:  2008-05-06
Aachen, Germany
 

Hallo,

der komplette Block sieht seltsam aus:

<models>
<
MyModul>
<!-- <class>
Asdf_MyModul_Model_Order</class> -->
<
rewrite>
<
sales_order_view_info>Asdf_MyModul_Model_Order</sales_order_view_info>
</
rewrite>
</
MyModul>

<
core>
<
rewrite>
<
sales_order>Asdf_MyModul_Model_Order</sales_order>
</
rewrite>
</
core>
</
models>

Erstens ist es nicht eingerückt, aber das stört nicht die Funktionalität, nur mein Ästhetikempfinden.
Zur Definition deines eigenen Models unter <MyModul>: Dies sollte komplett kleingeschrieben sein, also <mymodul> oder <my_modul>. Hier definierst du eigene Models, die keine vorhandenen überschreiben. Deshalb sollte darin auch kein <rewrite> stehen.

Zu deinem eigentlichen Problem: Du willst das Model Mage_Sales_Model_Order überschreiben. Mage ist da sozusagen der Namespace, Sales ist der Name des Moduls, Model steht für den Typ der Klasse und Order ist der Name des Models. Von Core sehe ich da nichts. Deshalb müsste der Block korrekt heißen:

<sales> <!-- Modul -->
    <
rewrite>
        <
order>Asdf_MyModul_Model_Order</order> <!-- Model -->
    </
rewrite>
</
sales>
Wenn sich deine Klasse dann noch im gleichnamigen Verzeichnis befindet (also Asdf/MyModul/Model/Order unter z.B. app/code/local/) und das Modul aktiviert ist, müsste das Model eigentlich erfolgreich überschrieben werden.

Viel Erfolg,
Andreas

 
Magento Community Magento Community
Magento Community
Magento Community
 
datensurfer
Sr. Member
 
Total Posts:  103
Joined:  2009-07-15
 
team in medias - 24 September 2009 10:24 AM

Hallo,

der komplette Block sieht seltsam aus:

<models>
<
MyModul>
<!-- <class>
Asdf_MyModul_Model_Order</class> -->
<
rewrite>
<
sales_order_view_info>Asdf_MyModul_Model_Order</sales_order_view_info>
</
rewrite>
</
MyModul>

<
core>
<
rewrite>
<
sales_order>Asdf_MyModul_Model_Order</sales_order>
</
rewrite>
</
core>
</
models>
team in medias - 24 September 2009 10:24 AM

Erstens ist es nicht eingerückt, aber das stört nicht die Funktionalität, nur mein Ästhetikempfinden.

Sorry die Einrückung ist irgendwie durch copy & past verloren gegangen.

team in medias - 24 September 2009 10:24 AM

Zur Definition deines eigenen Models unter <MyModul>: Dies sollte komplett kleingeschrieben sein, also <mymodul> oder <my_modul>. Hier definierst du eigene Models, die keine vorhandenen überschreiben. Deshalb sollte darin auch kein <rewrite> stehen.

ok!

team in medias - 24 September 2009 10:24 AM

Zu deinem eigentlichen Problem: Du willst das Model Mage_Sales_Model_Order überschreiben. Mage ist da sozusagen der Namespace, Sales ist der Name des Moduls, Model steht für den Typ der Klasse und Order ist der Name des Models. Von Core sehe ich da nichts.

um es vorweg zu nehmen, die genannte Konfiguration funktioniert so:

team in medias - 24 September 2009 10:24 AM

Deshalb müsste der Block korrekt heißen:

<sales> <!-- Modul -->
    <
rewrite>
        <
order>Asdf_MyModul_Model_Order</order> <!-- Model -->
    </
rewrite>
</
sales>

Allerdings ist das Verständniß noch nicht ganz klar.
Der Namespace “Mage” liegt unter “\app\code\core” ... beim Aufruf in der Config wird allerdings so wie es scheint, kein “core” und auch kein “mage” aufgerufen. Woher wird klar welcher Namespace definiert ist bzw. wann muss ein “core” in der config aufgerufen werden? Auf was bezieht sich das “core”?
In einigen Tutorials habe ich es so gesehen und wohl falsch abgeleitet.

Meine Annahme war bisher dass die API unter dem Mage Ordner liegt welcher wiederum unter “core” liegt, daraus ergab sich dann die alte xml-config, welche offenbar falsch war.

team in medias - 24 September 2009 10:24 AM

Wenn sich deine Klasse dann noch im gleichnamigen Verzeichnis befindet (also Asdf/MyModul/Model/Order unter z.B. app/code/local/) und das Modul aktiviert ist, müsste das Model eigentlich erfolgreich überschrieben werden.

Viel Erfolg,
Andreas

danke, es funktioniert so wunderbar! grin

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top