Через API изменяю name в quote item. Для этого переопределил CartItemPersister и дописал назначение name. Теперь я могу записывать свое значение для этого поля.
Далее я бы хотел возможность отобразить измененное имя. Однако, в quote item всегда стоит текущее имя продукта. Для коллекций я нашел причину: при загрузке quote items для каждого item загружается продукт тем самым перезаписывая поля с данными самого quote item.
Можно, конечно, переопределить класс и сделать как-то так:
// Magento\Quote\Model\ResourceModel\Quote\Item\Collection
// _assignProducts()
$name = $item->getName();
$item->setQtyOptions($qtyOptions)->setProduct($product);
$item->setName($name);
Мне это решение не нравится. Неужели разработчики сделали сохранение данных в бд для продукта в quote item ради интереса без особой цели... Чтобы при его загрузке затирать эти данные.
Может быть я ошибаюсь и что-то пропустил?