Failed opening 'Mage/Sync/Model/Observer.php' für die Aufnahme
-
16-10-2019 - |
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?
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>
.