Wie erhalte ich die Lieferadresse programmgesteuert in Drupal Commerce? Welchen Wrapper soll ich verwenden?


12

Ich muss die Versandadresse (genauer gesagt das Versandland) programmgesteuert in Drupal Commerce ermitteln. Ich habe das $orderObjekt. Wie kann ich die Lieferadresse bekommen?

EDIT - Ok, ich habe das getan

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

Jetzt muss ich es wieder einpacken, aber ich kenne den Typ nicht

$shipping_wrapper = entity_metadata_wrapper(?, $order);

Was soll ich anstelle des Fragezeichens setzen?

Antworten:


7

Ok, ich habe das so gemacht

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
Haben Sie es geschafft, das $ order-Objekt in Ihrem benutzerdefinierten Modul abzurufen? wenn ja, kannst du mir sagen wie?
DropDragon

1

Sie können verwenden commerce_customer_profile_load($profile_id), die Profil-ID kann von der $order->commerce_customer_shippingVariablen abgerufen werden, da Sie das Auftragsobjekt haben.


1

Es gibt 2 Möglichkeiten, die Versandadresse des Kunden / Benutzers zu finden.

function get_user_shipping_address(){

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

Nachdem Sie die Profil-ID erhalten haben, können Sie das Profil laden und den Namen und die Adresse des Kunden abrufen

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

zweite Möglichkeit, wenn Sie $ Auftrag haben

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;
 }
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.