2015-12-10 4 views
2

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

приложение/код/​​местные/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> 

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

ответ

1

Первое, что я заметил, это то, что ваша заявка на наблюдателя должна вызвать 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 или другую архитектуру кеширования в производстве vs dev/staging/local, вы, возможно, забыли очистить свой кеш другим способом, как вы это делаете локально.

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

+0

Благодарим Вас за отзыв! Я не смог выполнить эту работу даже после реализации ваших предложений, но полезный совет независимо. –

 Смежные вопросы

  • Нет связанных вопросов^_^