Magento 1.9.2.1 - Наблюдатель: catalog_product_save_before не срабатывает

Я искал, я не знаю, сколько страниц 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>

Я даже пытался добавить случайные символы в код, чтобы спровоцировать фатальную ошибку, но она никогда не вызывается. Это может быть моя очень простая ошибка, все, что я знаю, это то, что я тщательно просмотрел свой код и, похоже, не могу найти проблему.

Пожалуйста, попробуйте прокомментировать, прежде чем давать ответ, так как я уже испробовал множество решений и, возможно, уже ваше.

Заранее большое спасибо за вашу помощь, любое предложение будет оценено!


person ElGatito    schedule 06.11.2015    source источник
comment
вы пробовали использовать отладчик? Вы пытались создать модуль для него? если да, то где вы сохранили манифест модуля?   -  person iam-decoder    schedule 06.11.2015
comment
@iam-decoder спасибо за ваш комментарий. Я не пробовал никакой отладчик, не могли бы вы предложить его? Этот наблюдатель на самом деле является частью полностью функционального и работающего модуля, насколько я знаю, он должен работать. Извините, но я не уверен, что понимаю, что вы подразумеваете под манифестом?   -  person ElGatito    schedule 06.11.2015
comment
XDebug хорошо зарекомендовал себя на протяжении многих лет, и манифест представляет собой XML-файл модуля. поскольку ваш модуль работает, вы следили за структурой папок модуля? Трудно сказать без этой части XML   -  person iam-decoder    schedule 06.11.2015
comment
Вы имеете в виду этот файл: app/etc/modules/NameSpace_Module.xml ?   -  person ElGatito    schedule 06.11.2015
comment
да, у него есть структура папок, которой нужно следовать, чтобы модуль контролировал там действия. Не знаю, прочитали ли вы это уже хорошо, но это может помочь вам Эш Смит - Использование наблюдателей в Magento   -  person iam-decoder    schedule 06.11.2015
comment
Я обновил вопрос и добавил к нему содержимое XML-файла модуля.   -  person ElGatito    schedule 06.11.2015


Ответы (1)


Есть моменты, когда я спрашиваю себя;

-Я действительно разработчик?

Эти моменты, когда весь мой сложный код проверен и полностью функционален всеми возможными способами, кроме чего-то такого простого и маленького.

После проверки того, действительно ли моя модель наблюдателя существует внутри Magento:

require_once('/home/user/public_html/app/Mage.php');

Mage::init();

$observer = Mage::getModel('module/observer');

Это так, я также понял, что вывод был простым text...

Добавление <?php перед любым php-кодом всегда хорошая идея!

person ElGatito    schedule 08.11.2015