ฉันพยายามที่จะเพิ่มตัวเลือกสำหรับคุณลักษณะขนาดและสีในโมดูลตัวนำเข้าของฉัน แต่ฉันทำไม่ได้ ... :
private function addOption($attributeCode, $value)
{
$ob = $this->_objectManager;
/* @var $m \Magento\Eav\Model\Entity\Attribute\OptionManagement */
$m = $this->optionManagement;
/* @var $option \Magento\Eav\Model\Entity\Attribute\Option */
$option = $this->attributeOption;
$option->setLabel($value);
$option->setValue($value);
$m->add(\Magento\Catalog\Api\Data\ProductAttributeInterface::ENTITY_TYPE_CODE,
$attributeCode,
$option);
รายงานข้อผิดพลาด (ฉันแก้ไขการรายงานข้อยกเว้นOptionMaganger.php
ไปยังข้อยกเว้น -> ข้อความ )
ไม่สามารถบันทึกขนาดแอตทริบิวต์หมายเหตุ: ดัชนีที่ไม่ได้กำหนด: ลบใน /var/www/html/magento2/vendor/magento/module-swatches/Model/Plugin/EavAttribute.php ที่บรรทัด 177
- OptionManagement และ Option มาจาก
_contstructor
- ด้วย OptionManagement ฉันสามารถดึงรายการที่มีอยู่ดังนั้นควรจะโอเค ..
setLabel()
และsetValue()
เป็นค่าเริ่มต้น แต่ฉันได้ลองsetDataแล้วโหลดตัวเลือกอินสแตนซ์และผ่านOptionManagement->getItems
ไปเพื่อเพิ่ม (... ) "อีกครั้ง" แต่ข้อผิดพลาดยังคงมีอยู่ ...
ความคิดใด ๆ ฉันจะผนวกตัวเลือก EAV (swatches) ได้อย่างไรในระหว่างกระบวนการนำเข้า (ไม่ได้อยู่ในการตั้งค่าโมดูล)
อัปเดต:
วิธีอื่นที่ฉันสามารถเพิ่มตัวเลือก:
$attributeCode = 137; /* on size, 90 on color ... */
$languageValues[0]='Admin Label';
$languageValues[1]='Default Store Label - XXXXL';
$ob = $this->_objectManager;
private function addOption($attributeCode,$languageValues){
$ob = $this->_objectManager;
/* @var $attr \Magento\Eav\Model\Entity\Attribute */
$attr = $ob->create('\Magento\Eav\Model\Entity\Attribute');
$attr->load($attributeCode);
$option = [];
$option['value'][$languageValues[0]] = $languageValues;
$attr->addData(array('option' => $option));
$attr->save();
}
Magento2 ด้วยวิธีนี้สามารถบันทึกตัวเลือกให้กับแอตทริบิวต์ แต่ฉันไม่รู้ว่า "ทางการ" เป็นอย่างไร :)