Magento 2 - получите идентификатор клиента через адрес доставки на сессии проверки - PullRequest
0 голосов
/ 15 февраля 2019

У меня проблемы с получением идентификатора адреса клиента, поскольку он возвращает нулевое значение.

Это то, что я пробовал:

$checkout = $this->_sessionCheckout->getQuote();
if ($checkout) {
   $shippingAddress = $checkout->getShippingAddress();
   if ($shippingAddress) {
       $addressId = $shippingAddress->getCustomerAddressId();
       $this->_logger->log(100, print_r('address Id: ' . $addressId , true)); //Returns null 
       /** @var \Magento\Customer\Api\Data\AddressInterface $address */
       $address = $this->_addressRepository->getById($addressId);
       $address->setCity($city_name);
       $this->_addressRepository->save($address);
}

Мне просто нужно получить идентификатор адреса клиентадля того, чтобы обновить город.Я не знаю, почему он возвращает нулевое значение.

Заранее спасибо.


Отредактированные данные:

На изображении ниже показаны сохраненные адреса доставки:

адреса доставки

То, что я хочу знать, это как узнать идентификатор адреса клиента каждого из этих адресов доставки.Так что я могу изменить любые детали, которые я хочу.

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

Вы можете получить заказ следующим образом. Где бы вы ни захотели вызвать эту информацию, добавьте следующую информацию в Конструкторе, если она еще не используется.

protected $checkoutSession;
public function __construct(
        \Magento\Checkout\Model\Session $checkoutSession,
        \Psr\Log\LoggerInterface $logger
    )
    {

        $this->checkoutSession = $checkoutSession;
        $this->logger = $logger;
    }


    $order = $session->getLastRealOrder();
    $orderdata = $order->getData();
    $shipping_address_id = $orderdata['shipping_address_ID'];

Этот адрес является окончательным адресом доставки, выбранным при оплатеэтап оформления заказа.

0 голосов
/ 15 февраля 2019

Когда вы размещаете заказ в качестве гостя, вы должны добавить адрес доставки на странице оформления заказа, тогда не будет ссылочного объекта клиента, поэтому вы получаете значение идентификатора адреса клиента равным нулю.

Когда вы размещаете заказ как зарегистрированный клиент, у вас должен быть адрес доставки по умолчанию, тогда только вы можете получить значение идентификатора адреса клиента.

Это происходит потому, что customer_address_id является ссылкой на таблицу customer_addressи customer_address ссылка на таблицу customer_entity таблица.

...