Akeneo 2.1.4: почему Akeneo не позволяет вам изменить семейный вариант?
Когда я импортирую новые модели продуктов в Akeneo и хочу изменить семейный вариант, я получаю следующее сообщение:
15:25:11 WARNING [batch] The Pim\Component\Connector\Processor\Denormalization\ProductModelProcessor was unable to handle the following item:
[family_variant => name_of_family_variant]
(REASON: family_variant: Property "family_variant" cannot be modified, "name_of_family_variant" given.) [] []
Теперь я могу обойти это исключение, расширив Pim\Component\Catalog\Updater\ProductModelUpdater
вот так:
/**
* @param ProductModelInterface $productModel
* @param array $data
* @param array $options
* @return $this|\Akeneo\Component\StorageUtils\Updater\ObjectUpdaterInterface
*/
public function update($productModel, array $data, array $options = [])
{
try {
return parent::update($productModel, $data, $options);
} catch (ImmutablePropertyException $exception) {
// Allow changing of the family_variant field for a product model
if ($exception->getPropertyName() === 'family_variant') {
if ($familyVariant = $this->familyVariantRepository->findOneByIdentifier($exception->getPropertyValue())) {
$productModel->setFamilyVariant($familyVariant);
}
}
return $this;
}
}
Но что мне интересно (и, возможно, кто-то из команды Akeneo может ответить на это)
- Почему мне не разрешено менять семейный вариант?
- Каковы могут быть возможные побочные эффекты от этого?
1 ответ
Эта функция на самом деле находится в резерве Akeneo (хотя нет ETA).
Изменение семейного варианта модели продукта оказывает огромное влияние на каталог и требует много проверок:
- Вы должны убедиться (по крайней мере), что семейный вариант происходит из той же предыдущей семьи
- Как насчет значений, поступивших от его предыдущего родителя?
- Необходимо выполнить задание, чтобы рекурсивно редактировать каждого из его потомков, чтобы применить новые значения / изменение варианта семейства.
- Что если новый семейный вариант не имеет одинакового количества уровней вариантов?
- (и еще много вариантов использования...)
По всем этим причинам в настоящее время пока невозможно обновить семейный вариант модели продукта.