Додавання простого продукту до налаштовуваного в Magento 2 програмно

Конфігуровані продукти безумовно виділяються у списку інших 2 типи продуктів Magento . Вони стають у пригоді, коли ви хочете запропонувати своїм клієнтам кілька варіантів продуктів.

За замовчуванням Magento 2 не дозволяє призначити існуючий прості продукти існуючому налаштовувані продукти з адміністративної панелі. Єдиний варіант — створити так званий заповнювач у конфігурації, а потім додати замість нього потрібний вам продукт.

Таке рішення насправді не є корисним, оскільки вимагає занадто багато зайвих кроків. Саме тому програмний спосіб виконання цього завдання може бути кориснішим.

Отже, щоб програмно додати простий продукт до налаштовуваного продукту в Magento 2, зверніться до методу нижче

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$simple_product = $objectManager->create(\Magento\Catalog\Model\Product::class);
$simple_product->setSku('test-simple');
$simple_product->setName('test name simple');
$simple_product->setAttributeSetId(10);
$simple_product->setSize_general(193); // value id of S size
$simple_product->setStatus(1);
$simple_product->setTypeId('simple');
$simple_product->setPrice(10);
$simple_product->setSize(91);
$simple_product->setColor(49);
$simple_product->setWebsiteIds(array(1));
$simple_product->setCategoryIds(array(31));
$simple_product->setStockData(array(
        'use_config_manage_stock' => 0, //'Use config settings' checkbox
        'manage_stock' => 1, //manage stock
        'min_sale_qty' => 1, //Minimum Qty Allowed in Shopping Cart
        'max_sale_qty' => 2, //Maximum Qty Allowed in Shopping Cart
        'is_in_stock' => 1, //Stock Availability
        'qty' => 100 //qty
    )
);
$simple_product->save();

$simple_product_id = $simple_product->getId();
echo "simple product id: ".$simple_product_id."\n";

//configurable product
$configurable_product = $objectManager->create(\Magento\Catalog\Model\Product::class);
$configurable_product->setSku('test-configurable');
$configurable_product->setName('test name configurable');
$configurable_product->setAttributeSetId(4);
$configurable_product->setStatus(1);
$configurable_product->setTypeId('configurable');
$configurable_product->setPrice(11);
$configurable_product->setWebsiteIds(array(1));
$configurable_product->setCategoryIds(array(31));
$configurable_product->setStockData(array(
        'use_config_manage_stock' => 0, //'Use config settings' checkbox
        'manage_stock' => 1, //manage stock
        'is_in_stock' => 1, //Stock Availability
    )
);

$size_attr_id = $configurable_product->getResource()->getAttribute('size')->getId();
$color_attr_id = $configurable_product->getResource()->getAttribute('color')->getId();
$configurable_product->getTypeInstance()->setUsedProductAttributeIds([$color_attr_id, $size_attr_id], $configurable_product);
$configurableAttributesData = $configurable_product->getTypeInstance()->getConfigurableAttributesAsArray($configurable_product);
$configurable_product->setConfigurableAttributesData($configurableAttributesData);
$configurableProductsData = [];
$configurable_product->setConfigurableProductsData($configurableProductsData);

$productId = $configurable_product->getId();
$associatedProductIds = [$simple_product_id]; // Add Your Associated Product Ids.
$configurable_product->setAssociatedProductIds($associatedProductIds); // Setting Associated Products
$configurable_product->setCanSaveConfigurableAttributes(true);
$configurable_product->save();

echo "configurable product id: ".$configurable_product->getId()."\n";

Ось так! Сподіваємося, це рішення допоможе вам позбутися проблем з керуванням продуктами.

Щойно ви навчитеся додавати простий продукт до налаштовуваного, ви також можете дізнатися, як отримати поточний продукт у Magento .