php - 从 Magento 中的货件跟踪事件获取跟踪 ID

标签 php magento

我正在尝试从 Magento 1.9.0.1 中的 sales_order_shipment_track_save_after 事件获取跟踪号。由于某些原因,该事件似乎不包括装运,因为 $observer->getEvent()->getShipment() 返回 NULL。我使用了错误的事件吗?

这些是我的代码的相关部分:

config.xml(模块)

<events>
  <sales_order_shipment_track_save_after>
    <observers>
      <pixelstore_sms>
        <type>model</type>
        <class>pixelstore_sms/observer</class>
        <method>shipments</method>
      </pixelstore_sms>
    </observers>
  </sales_order_shipment_track_save_after>
</events>

Observer.php(模型)

public function shipments($observer) {
    $event = $observer->getEvent();
    $shipment = $event->getShipment();
    if (!$shipment) {
        Mage::log('shipments event did not contain shipment', null, 'track.log');
        return false;
    }
    // We never reach this far
    $trackings = $shipment->getAllTracks();
    $tracking = end($trackings);
    $trackingId = $tracking->getNumber();
    // Here I would prefer to have the tracking ID in $trackingId
}

您可能已经猜到了,if 语句匹配。 get_class() 表明观察者是Varien_Event_Observer

我是观察到了错误的事件,还是我应该调用其他方法来获取跟踪 ID?

最佳答案

我发现该事件包含 track 键下的 Mage_Sales_Model_Order_Shipment_Track 对象。这意味着我可以使用 $event->getData('track')$event['track'] 或仅使用 $event- 从事件中获取它>getTrack()。所以这就是最终解决我的问题的方法:

public function shipments(Varien_Event_Observer $observer) {
  $event = $observer->getEvent();
  $track = $event->getTrack();
  $trackingId = $track->getNumber();

  // The shipment itself can be found in the track object,
  // and the order inside the shipment object:
  $shipment = $track->getShipment();
  $order = $shipment->getOrder();
}

这完全是对实际事件中包含的内容的误解。

关于php - 从 Magento 中的货件跟踪事件获取跟踪 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30194356/

相关文章:

php - MySql Php 查找相似值

javascript - 从 mysql 选择数据并将各个行放入数组中

javascript - 使用 .serializeArray 从所有选中的复选框中获取值

apache - [proxy_fcgi :error](70007)The timeout specified has expired

javascript - 向管理输入和文本区域添加字符数

php - 网站返回内容错误 404

php - 基于 Web 的文本聊天?

mysql - Magento 2.2.6 到 2.3.2 升级问题

php - 如何以编程方式在 magento 中创建贷项通知单

magento - 使用按钮添加自定义折扣订单