วิธีรับที่อยู่จัดส่งโดยทางโปรแกรมใน drupal commerce ฉันควรใช้ wrapper อะไร


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ตัวแปรเนื่องจากคุณมีวัตถุสั่งซื้อ


1

มี 2 ​​วิธีในการค้นหาที่อยู่จัดส่งของลูกค้า / ผู้ใช้

function get_user_shipping_address(){

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

หลังจากรับรหัสโปรไฟล์คุณสามารถโหลดโปรไฟล์และรับชื่อและที่อยู่ของลูกค้า

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

วิธีที่สองถ้าคุณมีการสั่งซื้อ $

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.