I have an Observer that runs after the "sales_order_place_after" event is triggered that is used for sending data to another server. This script worked great in Magento 1.9.2.2, but since upgrading to 2.2, we're no longer seeing the individual lines of the street address come through correctly.
We're getting the order details like this:
$order = $observer->getOrder();
...and trying to get the street address like this:
$order->getBillingAddress()->getStreet1() $order->getShippingAddress()->getStreet1()
and
$order->getBillingAddress()->getStreet2() $order->getShippingAddress()->getStreet2()
However, it is coming through completely blank. Has something changed in Magento 2.2 that would cause this to not work correctly?
Any assistance is appreciated.
Solved! Go to Solution.
Would you then access the individual lines as so:
Line 1 would be: $billStreet[0]
Line 2 would be: $billStreet[1]
Getting an error during checkout, and the following in exception.log:
[2017-11-22 17:50:18] main.CRITICAL: Notice: Undefined offset: 1 in /path-to-magento/app/code/path-to-observer/SendOrderDataObserver.php on line 91 {"exception":"[object] (Exception(code: 0): Notice: Undefined offset: 1 in /path-to-magento/app/code/path-to-observer/SendOrderDataObserver.php on line 91 at /path-to-magento/vendor/magento/framework/App/ErrorHandler.php:61)"} []
Line 91 is trying to access line 2 (index 1) of the array:
<billToAddress2>' . $billStreet[1] . '</billToAddress2>
I was actually just coming back to edit that post - I realized it wasn't being checked before accessing it.
Thank you for your assistance with this.
Following up on this issue we had with our observer previously.
Attempting to access the street address of the shipping address has caused a fatal error to show up (which, in turn, has caused some orders to be processed but not recorded in Magento).
The error is as follows:
PHP Fatal error: Uncaught Error: Call to a member function getStreet() on null in /path/to/file/Observer.php:135
The line in question is like this:
$shipStreet = $order->getShippingAddress()->getStreet();
Here's the issue - if this is a guest order where a user doesn't have an account (so they do not have a shipping address on record), how can we use this functionality to check for an address to be present before actually getting it in our script?