События не запускаются или наблюдатель не работает в magento - PullRequest
4 голосов
/ 13 октября 2010

У меня есть модуль, который прослушивает несколько событий. Он отлично работает, по крайней мере, в дюжине инсталляций, на которых я его тестировал.

На определенной установке, клиент, который я установил, на версии 1.4.1.1 Magento, не работает. Когда я тестировал его систему и запускаю события вручную, например, Mage :: dispatchEvent ('..'), наблюдатель их прослушивает.

На что мне обратить внимание? Я понятия не имею, что может быть причиной этого.

Ответы [ 2 ]

19 голосов
/ 13 октября 2010

Есть несколько причин, по которым это может происходить

  1. Событие, которое вы пытаетесь прослушать, не существует в вашей версии Magento

  2. Кто-то взломал файл ядра и случайно удалил прослушиваемое событие

  3. Кто-то переопределил метод

  4. Ваш наблюдатель настроен неправильно, и Magento его не "видит".

  5. Ваш наблюдатель настроен правильно, но старая конфигурация кэшируется

Шаги, которые я бы предпринял для отладки:

  1. Убедитесь, что объединенная глобальная конфигурация 1030 * имеет конфигурацию вашего события. Если он не очищает ваши кэши, пока не появится

  2. Загрузите свежую версию исходного кода и сравните ваши app/code/core/ и lib/ с исходной версией. Введите man diff в приглашении Unix, чтобы узнать об инструменте сравнения, если вы еще не знакомы с ним.

  3. Grep (или ack ) базовая кодовая база для события, которое вы пытаетесь прослушать.

  4. Временно добавьте код регистрации в Mage::dispatchEvent в app/Mage.php, чтобы убедиться, что искомое событие действительно запускается.

  5. Начиная с Mage::dispatchEvent, следуйте по пути выполнения до точки вызова слушателей и узнайте, почему код в Magento не вызывает ваш метод

Первый раз, когда вы это сделаете, будет потрачено время, поэтому по пути делайте заметки о том, что происходит в коде ядра системы Magento. Таким образом, в следующий раз, когда вы устраните подобную проблему, она пойдет намного быстрее (если вы действительно хотите быть милой, вы можете поделиться тем, что вы найдете здесь, в своем блоге или в вики Magento)

0 голосов
/ 11 мая 2017

Как я недавно обнаружил , модуль может отображаться как включенный в Magento, но фактически не работает, если имя папки для модуля начинается со строчной буквы. Возможно, это позволит кому-то еще сохранить свои волосы в будущем.

...