Я искал, я не знаю, сколько страниц Google, прежде чем решить написать этот вопрос, и я знаю, что уже есть несколько очень хороших ответов от Мариус и Алан Сторм на очень похожие вопросы, но я, к сожалению, не смог демистифицировать, почему мой наблюдатель не срабатывает, как должен.
Я не в первый раз играю с наблюдателями, и я сбрасывал кеш либо из админа, либо вручную из папки var/cache, я пробовал разные рабочие синтаксисы для вызова модели (complete_model_path_with underscores,module/model,uppercase, lowercase ). У меня есть другие наблюдатели, работающие каждый день на одной и той же установке, и я безуспешно пытался сделать это точно так же. Я также пытался звонить с синглтоном вместо модели. Я пробовал три вида области видимости (глобальный, интерфейс и 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>
Я даже пытался добавить случайные символы в код, чтобы спровоцировать фатальную ошибку, но она никогда не вызывается. Это может быть моя очень простая ошибка, все, что я знаю, это то, что я тщательно просмотрел свой код и, похоже, не могу найти проблему.
Пожалуйста, попробуйте прокомментировать, прежде чем давать ответ, так как я уже испробовал множество решений и, возможно, уже ваше.
Заранее большое спасибо за вашу помощь, любое предложение будет оценено!