首页 > 解决方案 > 在 Magento 2 中的 checkout_onepage_controller_success_action 上获取送货地址

问题描述

我想获取有关 checkout_onepage_controller_success_action 事件的所有运输详细信息。

我正在使用以下代码:

$event = $observer->getEvent();
$orderIds = $event->getOrderIds();
$order_id = $orderIds[0];
$shipping = $order_id->getShippingAddress()->getData();
$shippingMethod = $order_id->getShippingMethod();

我得到了错误:

错误:调用字符串上的成员函数 getShippingAddress()。

根据我的说法,在 getShippingAddress() 上传递 $order_id 的方式是错误的。有人可以向我简要介绍一下吗?我想跨订单 ID 获取完整数据。

标签: phpmagento2

解决方案


您的观察者类中的这段代码应该可以工作:

protected $orderFactory;

public function __construct(
    \Magento\Sales\Model\OrderFactory $orderFactory
) {
    $this->orderFactory = $orderFactory;
}

public function execute(\Magento\Framework\Event\Observer $observer)
{
    $orderId = $observer->getEvent()->getOrderIds()[0];
    $order = $this->orderFactory->create()->load($orderId);
    $shippingInformation = $order->getShippingAddress();
}

推荐阅读