Рейтинг:0

Расширьте ответ методов доставки Commerce API с помощью настраиваемых полей

флаг cn

С помощью модуля commerce API вы можете получить все доступные способы доставки заказа с помощью запроса GET на {{host}}/jsonapi/checkout/{{cart_uuid}}/shipping-methods. Результат примерно такой:

    {
        "тип": "вариант доставки",
        "id": "3 -- по умолчанию",
        "атрибуты": {
            "shipping_method_id": "3",
            "оказание услуг": {
                "идентификатор": "по умолчанию",
                "label": "Самовывоз"
            },
            "исходная_сумма": {
                "число": "0",
                "currency_code": "CZK",
                "отформатировано": "0,00 KÄ"
            },
            "количество": {
                "число": "0",
                "currency_code": "CZK",
                "отформатировано": "0,00 KÄ"
            },
            "описание": "",
            "дата_доставки": ноль
        }
    },

Я хотел бы добавить настраиваемое поле для каждого способа доставки.

Следующий это учебник, я попытался создать вычисляемое поле, например:

функция custom_module_entity_base_field_info (EntityTypeInterface $entity_type) {

  if ($entity_type->id() === 'commerce_shipment') { // также попробовал 'shipping_rate_option'
    $fields['tooltip'] = BaseFieldDefinition::create('строка')
      ->setLabel(t('подсказка'))
      -> установить только для чтения (ИСТИНА)
      ->setComputed(ИСТИНА)
      ->setClass(FieldTooltip::class);

    вернуть $поля;
  }

}

И мой класс

/**
 * Класс FieldTooltip.
 */
класс FieldTooltip расширяет FieldItemList {

  использовать ComputedItemListTrait;

  /**
   * {@inheritdoc}
   */
  защищенная функция calculateValue() {
    $this->list[0] = $this->createItem(0, 'текст всплывающей подсказки');
  }
}

Это ничего не сделало. Также пытался создать нормализатор, но это тоже ничего не изменило.

Есть ли способ добавить поле в этот ответ?

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

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