Я искал, я не знаю, сколько страниц Google, прежде чем написать этот вопрос, и я знаю, что уже есть очень хорошие ответы от Marius а также Алан Сторм на очень похожие вопросы, но я, к сожалению, не смог понять, почему мой наблюдатель не стреляет так, как должен.
Это не первый раз, когда я играю с наблюдателями, и я очистил кеш либо от администратора, либо вручную от папки var / cache, я пробовал разные рабочие синтаксисы для вызова модели (complete_model_path_with подчеркивания, модуль / модель, верхний регистр, нижний регистр ). У меня есть другие наблюдатели, работающие нормально каждый день на одной и той же установке, и я пытался сделать это точно так же, но безуспешно. Я также пытался звонить с синглтоном вместо модели. Я попробовал три вида области (глобальный, внешний интерфейс и adminhtml). Я искал любую прямую или косвенную перезапись ядра, но все же возможно, что я пропустил бы один скрытый внутри другого модуля, но я почти всегда использую модули от известных разработчиков, которые уважают большинство стандартов Magento.
Есть часть моего кода:
Приложение / код / местные / NameSpace / модуль / и т.д. /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>
Приложение / код / местные / NameSpace / модуль / модель /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;
}
}
приложение / и т.д. / модули /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>
Я даже пытался добавить случайные символы в коде, чтобы вызвать фатальную ошибку, но она никогда не вызывается. Это может быть моей очень простой ошибкой, все, что я знаю, это то, что я тщательно пропустил свой код и, похоже, не могу найти проблему.
Пожалуйста, попробуйте прокомментировать, прежде чем дать ответ, так как я уже пробовал много решений и, возможно, уже ваше.
Большое спасибо заранее за вашу помощь, Любое предложение будет оценено!
Есть моменты, когда я спрашиваю себя;
-Я действительно разработчик?
Это моменты, когда весь мой сложный код проверен и полностью функционален всеми возможными способами, кроме чего-то такого простого и маленького.
После проверки, действительно ли моя модель наблюдателя существует внутри Magento:
require_once('/home/user/public_html/app/Mage.php');
Mage::init();
$observer = Mage::getModel('module/observer');
Да, я также понял, что вывод был прост текст…
<?php
перед любым PHP-кодом всегда хорошая идея!Других решений пока нет …