Рейтинг:0

Как сохранить конкретное «состояние» товара в позиции заказа?

флаг br

Мне было бы необходимо, чтобы мой сайт сохранял «определенное состояние» продукта (ов) и относительных вариаций, приобретенных в заказе.

Я имею в виду, что при "стандартной" конфигурации Commerce в относительном пункт заказа сохраняются только:

ссылка на приобретаемый объект, количество, цену за единицу и общую цену

Поэтому, например, если тело купленного продукта или относительной вариации изменяется после того, как пользователь его купил, невозможно получить и показать его ценность в момент покупки.

Есть ли модуль\способ сохранения этой информации в позиции заказа?

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

Я использую модуль коммерции 2.x.

Dylan avatar
флаг kr
Я думаю, что правильным способом было бы иметь версии продукта, а затем связать элемент заказа с этой версией, но это может быть только в форме патча, например: https://www.drupal.org/project/commerce/ выпуски/2656896. Я бы, вероятно, либо выбрал 1) никогда не редактировать, а только создавать новые продукты или 2) хранить выходные данные JSON данных о продукте в поле элемента заказа.
Giuseppe avatar
флаг br
Я бы не стал ставить столь критичный патч. Хорошая идея с полем json. Существует ли служба для сохранения объекта (в данном случае коммерческого продукта) в формате JSON? Должен ли я использовать сериализацию API?
Dylan avatar
флаг kr
Честно говоря, я бы, вероятно, попытался использовать $entity->toArray() и json_encode() после того, как проанализировал данные, которые мне действительно нужны, ----- но было бы круче сериализовать объект, например: https://www.drupal.org/docs/8/api/serialization-api/serialization-api-обзор ----- \Symfony\Component\Serializer\SerializerInterface ----- $output = $this->serializer->serialize($entity, 'json'); ----- $entity = $this->serializer->deserialize($output, Drupal\commerce_product\Entity\ProductVariation::class, 'json');

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

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