dragon321723 2018-08-10 10:02
浏览 44

magento观察者没有按顺序发射xml

Not sure what is wrong. Have been writing custom extensions for our shops. First wrote one extension which observed checkout_onepage_controller_success_action

it was working fine.

added second extension which also observe same event, the second extension didn't called the function.

combined 2 extensions in to 1 and it did the trick, but now i have third extension with same event, again it doesn't fire the function.

removed other 2 extensions to keep the new one i just created with observer for checkout_onepage_controller_success_action still my function is not being executed.

not really sure what is wrong.

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
    }
}

so basically code have to dump some data for me and stop there. but i don't see any data nor the white screen of death.

i do see extension in backend as active one since have added some system configuration options to backend

  • 写回答

1条回答 默认 最新

  • duanshan2988 2018-08-27 11:28
    关注

    The event checkout_onepage_controller_success_action only have one object to get: $order.

    You're trying to get a $orderIds object that does not exist. That's why you receive an empty object:

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

    To get several orders you may get them by other way.

    Regards.

    评论

报告相同问题?

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测