С помощью модуля 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, 'текст всплывающей подсказки');
}
}
Это ничего не сделало.
Также пытался создать нормализатор, но это тоже ничего не изменило.
Есть ли способ добавить поле в этот ответ?