магнето sales_order_place_after наблюдатель

Я пытаюсь записать наблюдателю, который экспортирует данные порядка, когда заказ будет размещен. Я не записал модулей прежде. Базирование моей реализации на этой статье: http://www.magentocommerce.com/wiki/5_-_modules_and_development/0_-_module_development_in_magento/customizing_magento_using_event-observer_method

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

в magento/app/etc/modules/Feed.xml:



    
        
            local
            true
        
    

в magento/app/code/local/Feed/Sales/etc/config.xml:



    
        
            
                Feed_Sales_Model
            
        
        
            
                
                    
                        singleton
                        sales/order_observer
                        export_new_order
                    
                
            
        
    

в magento/app/code/local/Feed/Sales/Model/Order/Observer.php:

  

Magento 1.4 на Debian Lenny с Apache2, если это должно иметь значение по какой-либо причине.

14
задан jorelli 30 June 2010 в 23:38
поделиться

3 ответа

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

Ну, для протокола, вот как вы запускаете действие при размещении заказа. Я оставлю это для потомков.

0
ответ дан 1 December 2019 в 13:47
поделиться

Похоже, проблема в вашем объявлении наблюдателя. Попробуйте это:

    <events>
        <sales_order_place_after>
            <observers>
                <feed_sales_order_observer>
                    <type>singleton</type>
                    <class>feedsales/order_observer</class>
                    <method>export_new_order</method>
                </feed_sales_order_observer>
            </observers>
        </sales_order_place_after>
    </events>
3
ответ дан 1 December 2019 в 13:47
поделиться

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

Глядя на приведенные выше примеры, вы обнаруживаете некоторые не совсем правильные вещи.

Во-первых, ваш файл в папке etc назван неверно

magento/app/etc/modules/Feed.xml

Этот файл должен называться Packagename_Modulename , поэтому вы, вероятно, захотите

magento/app/etc/modules/Feed_Sales.xml

Посмотрите System -> Configuration -> Advanced, чтобы узнать, не ваш модуль появляется. Если да, то вы правильно назвали этот файл. Без этого созданный вами модуль не загружается в систему, и ваш код никогда не запускается.

Далее, вы неправильно указываете класс. Вы говорите

sales/order_observer

, но первая часть URI (продажи) неверна. Вы определили свой раздел моделей как

    <models>
        <feedsales> <!-- this is your model part -->
            <class>Feed_Sales_Model</class>
        </feedsales>
    </models>

, что означает, что вы хотите

feedsales/order_observer

Оформить заказ на вкладке Class / URI в Commerce Bug и попробовать ввести некоторые URI (например, sales / order ), чтобы получить лучшее представление о том, что здесь происходит.

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

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

14
ответ дан 1 December 2019 в 13:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: