Làm thế nào để có được địa chỉ giao hàng theo chương trình trong thương mại drupal - tôi nên sử dụng trình bao bọc nào?


12

Tôi cần lấy địa chỉ giao hàng (chính xác là quốc gia vận chuyển) theo chương trình trong thương mại drupal. Tôi có $orderđối tượng. Làm thế nào tôi có thể nhận được địa chỉ giao hàng?

EDIT - Ok tôi đã làm điều này

 $order_wrapper = entity_metadata_wrapper('commerce_order', $order);
 $shipping =  $order_wrapper->commerce_customer_shipping->value();

Bây giờ tôi cần phải bọc lại, nhưng tôi không biết loại

$shipping_wrapper = entity_metadata_wrapper(?, $order);

Những gì tôi nên đặt thay vì dấu hỏi?

Câu trả lời:


7

Ok tôi đã làm điều này theo cách này

function commerce_shipping_biagetti_service_rate_order($shipping_service, $order) {
  $order_wrapper = entity_metadata_wrapper('commerce_order', $order);
  $shipping = $order_wrapper->commerce_customer_shipping->commerce_customer_address->value();
  //$shipping is an array containing all shipping data

1
Bạn đã quản lý để có được đối tượng $ order trong mô-đun tùy chỉnh của mình chưa? nếu vậy bạn có thể cho tôi biết làm thế nào?
DropDragon

1

bạn có thể sử dụng commerce_customer_profile_load($profile_id), id hồ sơ có thể được tìm nạp từ $order->commerce_customer_shippingbiến vì bạn có đối tượng thứ tự.


1

Có 2 cách để tìm địa chỉ giao hàng của khách hàng / người dùng-

function get_user_shipping_address(){

global $user; 
$default_pid =commerce_addressbook_get_default_profile_id($user->uid,'shipping');

Sau khi nhận được id hồ sơ, bạn có thể tải hồ sơ và nhận tên & địa chỉ của khách hàng

$profile_load = commerce_customer_profile_load($default_pid);
$first_line = $profile_load->commerce_customer_address['und'][0]['name_line'];
$landmark = $profile_load->commerce_customer_address['und'][0]['sub_premise'];
$postal_code = $profile_load->commerce_customer_address['und'][0]['postal_code'];
$state = $profile_load->commerce_customer_address['und'][0]['locality'];
$add[] = $first_line . ' ' . $landmark . ' ' . $postal_code . ' ' . $state;
return $add;
}

cách thứ hai nếu bạn có $ order

function get_default_address_of_customer_by_order_id($order) {
  $order1 = commerce_order_load($order);
  $shipping_id = $order1->commerce_customer_shipping['und'][0]['profile_id'];
  $address = commerce_customer_profile_load($shipping_id);
  $first_line = $address->commerce_customer_address['und'][0]['name_line'];
  $landmark = $address->commerce_customer_address['und'][0]['sub_premise'];
  $postal_code = $address->commerce_customer_address['und'][0]['postal_code'];
  $state = $address->commerce_customer_address['und'][0]['locality'];
  $add[] = $first_line . ' ' . $landmark . ' ' . $postal_code . ' ' . $state;
  return $add;
 }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.