Наблюдатель magento, не запускающий xml, в порядке

Не уверен, что случилось. Пишем собственные расширения для наших магазинов. Сначала написал одно расширение, которое наблюдало checkout_onepage_controller_success_action

он работал нормально.

добавлено второе расширение, которое также регистрирует то же событие, второе расширение не вызывало функцию.

объединил 2 расширения в 1, и это помогло, но теперь у меня есть третье расширение с тем же событием, снова оно не запускает функцию.

удалили другие 2 расширения, чтобы сохранить новое, которое я только что создал с помощью наблюдателя для checkout_onepage_controller_success_action, но моя функция не выполняется.

не совсем уверен, что не так.

xml:

<?xml version = "1.0"?>
<config>
  <modules>
    <Wemessage_Easytrans>
      <version>1.0.0</version>
    </Wemessage_Easytrans>
  </modules>
  <global>
    <helpers>
      <easytrans>
        <class>Wemessage_Easytrans_Helper</class>
      </easytrans>
    </helpers>
    <models>
      <easytrans>
        <class>Wemessage_Easytrans_Model</class>
        <resourceModel>easytrans_mysql4</resourceModel>
      </easytrans>
    </models>
    <events>
      <checkout_onepage_controller_success_action> <!-- identifier of the event we want to catch -->
        <observers>
          <checkout_onepage_controller_success_action_handler> <!-- identifier of the event handler -->
            <type>model</type> <!-- class method call type; valid are model, object and singleton -->
            <class>Wemessage_Easytrans_Model_Observer</class> <!-- observers class alias -->
            <method>sendToEasyTrans</method>  <!-- observer's method to be called -->
            <args></args> <!-- additional arguments passed to observer -->
          </checkout_onepage_controller_success_action_handler>
        </observers>
      </checkout_onepage_controller_success_action>
    </events>
  </global>
</config> 

php:

<?php
class Wemessage_Easytrans_Model_Observer
{
    public function sendToEasyTrans(Varien_Event_Observer $observer){
        $order_ids = $observer->getEvent()->getOrderIds();
        $order = Mage::getModel('sales/order')->load($order_ids[0]);
        $shippingAddress = $order->getShippingAddress();
        var_dump($shippingAddress->getData());
        die;
        // removed some code since it will be very long to paste here
    }
}

так что в основном код должен сбрасывать некоторые данные для меня и останавливаться на достигнутом. но я не вижу ни данных, ни белого экрана смерти.

Я вижу расширение в бэкэнде как активное, так как добавили некоторые параметры конфигурации системы в бэкэнд

Он работает, я просто проверяю это, копируя / вставляя ваш код в свой экземпляр, где уже несколько наблюдателей работают с одним и тем же событием. Пожалуйста, внимательно проверьте имена папок и файлов.

Rehan Mobin 10.08.2018 13:40

проверено, все равно, если я изменю его на другого наблюдателя, он будет работать. поэтому решил придерживаться sales_order_place_after, но не уверен, срабатывает ли он только один раз.

Naberd Zendi 10.08.2018 14:17
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
199
1

Ответы 1

Событие checkout_onepage_controller_success_action имеет только один объект, который нужно получить: $ order.

Вы пытаетесь получить несуществующий объект $ orderIds. Вот почему вы получаете пустой объект:

    $order_ids = $observer->getEvent()->getOrderIds()

    $order = $observer->getEvent()->getOrder();

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

С Уважением.

Другие вопросы по теме