Обозреватели событий Magento или пользовательские модули не работают на производстве

Я пытаюсь использовать несколько классов наблюдателей & модули для Magento, все из которых помещаются в app / code / local. Все они работают на моей локальной рабочей станции, но НЕ будут работать, когда я копирую их в производство через FTP. Я схожу с ума, пытаясь понять, что происходит. Весь мой код кажется звуковым. Вот пример наблюдателя:

Приложение / код / ​​местные / Mural / Ценообразование / модель / Observer.php

<?php
class Mural_Pricing_Model_Observer {
public function setMuralPricing($observer) {
echo 'We did it!';
die();
}
}

Приложение / код / ​​местные / Mural / и т.д. / config.xml

<?xml version="1.0"?>
<config>
<modules>
<Mural_Pricing>
<version>0.0.1</version>
</Mural_Pricing>
</modules>
<global>
<models>
<Mural_Pricing>
<class>Mural_Pricing_Model</class>
</Mural_Pricing>
</models>
</global>
<adminhtml>
<events>
<sales_quote_add_item>
<observers>
<Mural_Pricing>
<class>mural_pricing/observer</class>
<method>setMuralPricing</method>
</Mural_Pricing>
</observers>
</sales_quote_add_item>
</events>
</adminhtml>
</config>

приложение / и т.д. / модули / Mural_Pricing.xml

<?xml version="1.0"?>
<config>
<modules>
<Mural_Pricing>
<codePool>local</codePool>
<active>true</active>
<depends>
<Mage_Catalog />
</depends>
</Mural_Pricing>
</modules>
</config>

Как я уже сказал, это хорошо работает локально, но не в производстве, с несколькими разными наблюдателями & модули. Разочарование. Заранее спасибо!

2

Решение

Первое, что я замечаю, это то, что ваша декларация mural_pricing/observer::setMuralPricing() на вашем наблюдаемом событии.

Если вы посмотрите на конфигурационный XML, вы регистрируете модели в этом модуле как Mural_Pricing/... согласно этому XML:

<models>
<Mural_Pricing>
<class>Mural_Pricing_Model</class>
</Mural_Pricing>
</models>

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

С другой стороны, я не думаю, что на самом деле имеет значение, как вы называете этот тег, но <Mural_Pricing> тег под <observers> в идеале должно представлять краткое описание того, что делает ваш наблюдатель (опять же, не думайте на самом деле имеет значение) — например, <mural_pricing_set_pricing>,

Наконец, нужно сказать — убедитесь, что вы правильно очистили кэш для повторного анализа конфигурации XML. Если вы используете Redis или другую кеширующую архитектуру в производственной среде по сравнению с dev / staging / local, то, возможно, вы забыли очистить кеш другим способом, нежели локально.

В конечном счете, ваш модуль выглядит отлично, за исключением различий в регистре псевдонима класса и объявления наблюдателя.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]