Претърсих не знам колко страници в Google, преди да реша да напиша този въпрос, и знам, че вече има някои много хубави отговори от Мариус и Алън Сторм на много подобни въпроси, но за съжаление не можах да демистифицирам защо моята наблюдателят не стреля както трябва.
Не е първият път, когато играя с наблюдатели и прочистих кеша или от администратора, и ръчно папката var/cache, опитах различни работещи синтаксиси за извикване на модела (complete_model_path_with underscore,module/model,uppercase, smallcase ). Имам други наблюдатели, които работят добре всеки ден на една и съща инсталация и се опитах да го направя по абсолютно същия начин без успех. Също така се опитах да се обадя със сингълтон вместо модел. Опитах трите изгледа на обхват (глобален, интерфейс и adminhtml). Търсих всяко пряко или косвено презаписване на ядрото, все още е възможно да съм пропуснал скрит в друг модул, но почти винаги използвам модули от известни разработчици, които спазват повечето стандарти на Magento.
Има част от моя код:
app/code/local/NameSpace/Module/etc/config.xml
<global>
<models>
<module>
<class>NameSpace_Module_Model</class>
<resourceModel>module_mysql4</resourceModel>
</module>
</models>
<events>
<catalog_product_save_before>
<observers>
<module>
<type>singleton</type>
<class>NameSpace_Module_Model_Observer</class>
<method>catalogProductSaveBefore</method>
</module>
</observers>
</catalog_product_save_before>
</events>
</global>
app/code/local/NameSpace/Module/Model/Observer.php
class NameSpace_Module_Model_Observer
{
public function catalogProductSaveBefore(Varien_Event_Observer $observer)
{
$product = $observer->getEvent()->getProduct();
file_put_contents("OBSERVER.TXT","FIRED");
echo "hello";
exit();
return $this;
}
}
АКТУАЛИЗИРАНЕ
app/etc/modules/NameSpace_Module.xml
<?xml version="1.0"?>
<config>
<modules>
<NameSpace_Module>
<active>true</active>
<codePool>local</codePool>
<version>0.1.0</version>
<depends>
<Mage_Catalog />
</depends>
</NameSpace_Module>
</modules>
</config>
Дори се опитах да добавя произволни символи в кода, за да провокирам фатална грешка, но тя никога не се извиква. Може да е много проста моя грешка, всичко, което знам е, че внимателно пренебрегнах кода си и изглежда не мога да намеря проблема.
Моля, опитайте се да коментирате, преди да дадете отговор, тъй като вече опитах много решения и може би вече вашето.
Благодаря ви много предварително за вашата помощ, всяко предложение ще бъде оценено!