Я пытаюсь записать наблюдателю, который экспортирует данные порядка, когда заказ будет размещен. Я не записал модулей прежде. Базирование моей реализации на этой статье: 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, если это должно иметь значение по какой-либо причине.
Вот дерьмо. Я был глуп. Я проверил это с помощью сценария командной строки, как я делаю со многими вещами, но этот конкретный файл мог быть записан только интерпретатором командной строки, а не интерпретатором Apache. Мне следовало покинуть офис раньше вчера вечером.
Ну, для протокола, вот как вы запускаете действие при размещении заказа. Я оставлю это для потомков.
Похоже, проблема в вашем объявлении наблюдателя. Попробуйте это:
<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>
Прочтите мои статьи , они помогут вам понять, что происходит с точки зрения соглашения об именах, и познакомят вас с некоторыми соглашениями / предположениями 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 только добавляет дополнительную путаницу, а это не то, что вам нужно, пока вы изучаете систему.