drupal 상거래에서 프로그래밍 방식으로 배송 주소를 얻는 방법-어떤 래퍼를 사용해야합니까?


12

drupal 상거래에서 프로그래밍 방식으로 배송 주소 (배송 국가가 정확해야 함)를 가져와야합니다. 나는 $order물건을 가지고있다 . 배송지 주소는 어떻게 알 수 있습니까?

편집-좋아, 내가 했어

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

이제 다시 마무리해야하지만 유형을 모르겠습니다.

$shipping_wrapper = entity_metadata_wrapper(?, $order);

물음표 대신 무엇을 넣어야합니까?

답변:


7

좋아, 나는 이것을 이런 식으로했다.

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
커스텀 모듈에서 $ order 객체를 얻었습니까? 그렇다면 어떻게 말해 줄 수 있습니까?
Ashkar A.Rahman

1

을 사용할 commerce_customer_profile_load($profile_id)수 있습니다 $order->commerce_customer_shipping. 주문 객체가 있으므로 프로파일 ID를 변수 에서 가져올 수 있습니다 .


1

고객 / 사용자 배송 주소를 찾는 방법은 두 가지가 있습니다.

function get_user_shipping_address(){

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

프로파일 ID를 얻은 후 프로파일을로드하고 고객 이름 및 주소를 얻을 수 있습니다.

$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;
}

당신이 $ 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;
 }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.