不确定什么是错误的。 一直在为我们的商店编写自定义扩展名。首先写了一个扩展,观察了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
}
}
所以基本上,代码必须为我转储一些数据并在那里停止。 但我没有看到任何数据,也没有看到死亡的白屏。
我确实将后端扩展视为活动扩展,因为已向后端添加了一些系统配置选项
答案 0 :(得分:0)
事件checkout_onepage_controller_success_action仅具有一个对象:$ order。
您试图获取一个不存在的$ orderIds对象。这就是为什么您收到一个空对象的原因:
$order_ids = $observer->getEvent()->getOrderIds()
$order = $observer->getEvent()->getOrder();
要获得多个订单,您可以通过其他方式获得它们。
致谢。