Frage

Ich versuche, eine Erweiterung, die einen Beobachter.

Aber magento-Suche das Modell in mage statt meiner lokalen Erweiterung "Test".system.log sagt mir:

Failed opening 'Mage/Sync/Model/Observer.php' für die Aufnahme

Meine /app/code/local/Test/Sync/etc/config.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Test_Sync>
            <version>0.0.1</version>
        </Test_Sync>
    </modules>
    <global>
        <models>
            <test>
                <class>Test_Sync_Model</class>
            </test>
        </models>
    </global>
    <frontend>
        <events>
            <sales_order_save_commit_after>
                <observers>
                    <test_sales_order_save_commit_after>
                        <type>singleton</type>
                        <class>sync/observer</class>
                        <method>export</method>
                    </test_sales_order_save_commit_after>
                </observers>
            </sales_order_save_commit_after>
        </events>
    </frontend>
</config>

/app/code/local/Test/Sync/Model/Observer.php

class Test_Sync_Model_Observer {
    public function export($observer)
    {
      // code
    }
}

Ich überprüfte Datei zugreifen und alle caches gelöscht.

Warum tut er das nicht mein Beobachter?

War es hilfreich?

Lösung

Das problem ist bisher nicht wirklich im Zusammenhang mit der Beobachter-Mechanismus.Es ist ein Grundsätzliches problem.

Wenn Magento versucht, um Dateien zu laden, wie Mage/Yourmodule/Model/Foo.php, dies zeigt an, dass die Suche nach der Magento-Klasse-Codes (D. H. sync/observer oder yourmodule/foo für mein Beispiel) in Mage::getModel() (Magento Aufrufe getModel() intern beim initialisieren der Beobachter) nicht ordnungsgemäß funktioniert.

Der code geschrieben werden in die <class> ... </class> Knoten folgt der gleichen Logik, als würde man es getModel().

Was du getan hast ist die Definition einer Zuordnung von test -> Test_Sync_Model.Also, wenn Sie verwenden

<class>test/observer</class> Magento sollte richtig zu verwenden Test_Sync_Model_Observer.

Aber Sie könnten gedacht haben, definieren Sie den alias test_sync (was häufiger ist).So im Abschnitt Modelle, es muss sein, <test_sync> und die Beobachter <class>test_sync/observer</class>.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top