Я получаю json-объект продукта, который необходимо создать в Craft Comemrce 5, но он создает продукт, но не удается создать вариант. Я пробовал использовать приведенные ниже подходы, но безуспешно.
Сохраните продукт, затем попробуйте сохранить вариант.
Создайте продукт и вариант одновременно. time $product->setVariants([$variant]);
Я получаю json-объект продукта, который необходимо создать в Craft Comemrce 5, но он создает продукт, но не удается создать вариант. Я пробовал использовать приведенные ниже подходы, но безуспешно. [list] [*]Сохраните продукт, затем попробуйте сохранить вариант. [*]Создайте продукт и вариант одновременно. time $product->setVariants([$variant]); [/list] Ниже мой код - [code]$product = new Product(); $product->typeId = $data['typeId']; // Product type ID $product->title = 'Test'; // Product title $product->enabled = $data['enabled'] ?? true; // Enabled status $product->productDescription = $data['description'] ?? ''; // Description $product->postDate = new \DateTime(); if (!\Craft::$app->elements->saveElement($product)) { return false; }
// Create a single default variant $variant = new Variant(); $variant->productId = $product->id; $variant->sku = "ABCD"; // SKU for the variant $variant->price = 10.01; // Price // $variant->stock = 1; // Stock level $variant->hasUnlimitedStock = false; // Manage stock $variant->isDefault = true; // Mark as default variant $variant->availableForPurchase = true; $variant->promotable = true; $variant->taxCategoryId = 1; $variant->shippingCategoryId = 1;
if (!\Craft::$app->elements->saveElement($variant)) { // dd($product->getErrors()); // \Craft::error('Failed to save product with variants: ' . json_encode($product->getErrors()), __METHOD__); return false; }
$product->setVariants([$variant]); if (!\Craft::$app->elements->saveElement($product)) { Craft::error('Failed to save product with variants: ' . json_encode($product->getErrors()), __METHOD__); return false; } [/code] Кроме того, я хочу сохранить акции, но получаю сообщение об ошибке, что атрибут «Акции» доступен только для чтения.