Puncte:2

Cum obțin valorile ratei și configurației?

drapel ar

sunt nedumerit. Cum obțineți valorile din configurația metodei de expediere? De exemplu, am o metodă de expediere cu tarif fix „Express”. Vreau să obțin valorile brute ale formularului de configurare stocate pe acea metodă de expediere. Cum ar fi rata sau un câmp personalizat pe care l-am furnizat.

M-am conectat la metodele de expediere pentru a adăuga un câmp de formular personalizat. Dar acum trebuie să-l recuperez mai târziu. Valorile nu sunt pe entitatea de expediere.

    $shippingMethodId = $commerceOrder->shipments->entity->shipping_method->entity->shipping_method_id->value;
    $shipping_method_storage = \Drupal::entityTypeManager()->getStorage('commerce_shipping_method');
    $metoda_livrare = $metoda_livrare_storage->load($shippingMethodId);
    //$metoda_livrare->rata->valoare
    //$shipping_method->honeys_place_shipping_code->valoare

Am încercat să adaug valorile la ShippingRate returnat de calculateRates()

funcția publică calculateRates(ShipmentInterface $shipment) {
    $rate = [];
    $rate[] = Rata de expediere noua([
      'shipping_method_id' => $this->parentEntity->id(),
      'service' => $this->services['default'],
      'amount' => Price::fromArray($this->configuration['rate_amount']),
      'description' => $this->configuration['rate_description'],
      'honeys_place_shipping_code' => $this->configuration['honeys_place_shipping_code'] // < -----
    ]);

    returnare $ rate;
  }

Aceasta se declanșează, dar nu ajunge mai târziu în entitatea de expediere a comenzii. Știu că pot recupera tariful accesând „cantitate” de la entitatea de expediere. Dar trebuie și să recuperez valori personalizate.

Există o modalitate de a prelua aceste valori din config sau de a le aduce pe obiectul entitate de expediere?

introduceți descrierea imaginii aici

Puncte:2
drapel cn
$shippingMethodId = $commerceOrder->shipments->entity->shipping_method->entity->shipping_method_id->value;
$shipping_method_storage = \Drupal::entityTypeManager()->getStorage('commerce_shipping_method');
$metoda_livrare = $metoda_livrare_storage->load($shippingMethodId);

$rate = $shipping_method->plugin->getValue()[0]['target_plugin_configuration']['rate_amount'];

Va trebui să cercetați mai profund câmpul plugin din entitatea shipping_method.

$shipping_method->plugin->getValue()[0];
// Aceasta va returna următoarea matrice de mai jos

introduceți descrierea imaginii aici

Matt Campbell avatar
drapel ar
Mulțumesc frumos. Nu m-am gândit să mă uit acolo.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.