Рейтинг:2

Как получить значения скорости и конфигурации?

флаг ar

Я в тупике. Как вы получаете значения из конфигурации метода доставки? Например, у меня есть метод доставки с фиксированной ставкой «Экспресс». Я хочу получить необработанные значения формы конфигурации, хранящиеся в этом методе доставки. Например, ставка или пользовательское поле, которое я предоставил.

Я подключился к методам доставки, чтобы добавить пользовательское поле формы. Но теперь нужно получить его позже. Значения не указаны в объекте отгрузки.

    $shippingMethodId = $commerceOrder->shipments->entity->shipping_method->entity->shipping_method_id->значение;
    $shipping_method_storage = \Drupal::entityTypeManager()->getStorage('commerce_shipping_method');
    $shipping_method = $shipping_method_storage->load($shippingMethodId);
    //$shipping_method->ставка->значение
    //$shipping_method->honeys_place_shipping_code->значение

Я попытался добавить значения к ShippingRate, возвращаемому из calculateRates().

публичная функция calculateRates(ShipmentInterface $shipment) {
    $ставки = [];
    $rates[] = новый ShippingRate([
      'shipping_method_id' => $this->parentEntity->id(),
      'сервис' => $this->услуги['по умолчанию'],
      'amount' => Price::fromArray($this->configuration['rate_amount']),
      'description' => $this->configuration['rate_description'],
      'honeys_place_shipping_code' => $this->configuration['honeys_place_shipping_code'] // < -----
    ]);

    вернуть $ставки;
  }

Это срабатывает, но позже не попадает в сущность отгрузки в заказе. Я знаю, что могу получить скорость, получив доступ к «сумме» от объекта доставки. Но мне также нужно получить пользовательские значения.

Есть ли способ получить эти значения из конфигурации или передать их в объект сущности отгрузки?

введите описание изображения здесь

Рейтинг:2
флаг cn
$shippingMethodId = $commerceOrder->shipments->entity->shipping_method->entity->shipping_method_id->значение;
$shipping_method_storage = \Drupal::entityTypeManager()->getStorage('commerce_shipping_method');
$shipping_method = $shipping_method_storage->load($shippingMethodId);

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

Вам придется копнуть глубже в поле plugin из сущности shipping_method.

$shipping_method->plugin->getValue()[0];
// Это вернет следующий массив ниже

введите описание изображения здесь

Matt Campbell avatar
флаг ar
Большое спасибо. Я не догадался туда заглянуть.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.