Не уверен, что случилось. Пишем собственные расширения для наших магазинов. Сначала написал одно расширение, которое наблюдало 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
}
}
так что в основном код должен сбрасывать некоторые данные для меня и останавливаться на достигнутом. но я не вижу ни данных, ни белого экрана смерти.
Я вижу расширение в бэкэнде как активное, так как добавили некоторые параметры конфигурации системы в бэкэнд
проверено, все равно, если я изменю его на другого наблюдателя, он будет работать. поэтому решил придерживаться sales_order_place_after, но не уверен, срабатывает ли он только один раз.






Событие checkout_onepage_controller_success_action имеет только один объект, который нужно получить: $ order.
Вы пытаетесь получить несуществующий объект $ orderIds. Вот почему вы получаете пустой объект:
$order_ids = $observer->getEvent()->getOrderIds()
$order = $observer->getEvent()->getOrder();
Чтобы получить несколько заказов, вы можете получить их другим способом.
С Уважением.
Он работает, я просто проверяю это, копируя / вставляя ваш код в свой экземпляр, где уже несколько наблюдателей работают с одним и тем же событием. Пожалуйста, внимательно проверьте имена папок и файлов.