magento观察者未触发xml

时间:2018-08-10 10:02:29

标签: php magento magento-1.9

不确定什么是错误的。 一直在为我们的商店编写自定义扩展名。首先写了一个扩展,观察了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
    }
}

所以基本上,代码必须为我转储一些数据并在那里停止。 但我没有看到任何数据,也没有看到死亡的白屏。

我确实将后端扩展视为活动扩展,因为已向后端添加了一些系统配置选项

1 个答案:

答案 0 :(得分:0)

事件checkout_onepage_controller_success_action仅具有一个对象:$ order。

您试图获取一个不存在的$ orderIds对象。这就是为什么您收到一个空对象的原因:

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

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

要获得多个订单,您可以通过其他方式获得它们。

致谢。