คำถามติดแท็ก extension-attributes

2
Magento2 สร้างส่วนขยายเฉพาะจากโรงงานและ ExtensionAttributeInterface ได้อย่างไร
ฉันต้องการห่อหัวของฉันไปรอบ ๆ โดยใช้คุณลักษณะส่วนขยายตัวอย่างเช่นสำหรับรายการราคา ไม่มีปัญหาในการเพิ่มแอตทริบิวต์ที่กำหนดเองให้กับเอนทิตี้ดังกล่าวโดยใช้คลาสการตั้งค่าเช่นเดียวกับใน Magento 1 นี่ไม่ใช่สิ่งที่คำถามนี้เกี่ยวกับ ในขณะที่เวทย์มนตร์ครอบงำฉันเมื่อฉันต้องการที่จะเปิดเผยคุณลักษณะดังกล่าวที่ถูกเพิ่มโดยส่วนขยายผ่านเอนทิตี API เป็นแอตทริบิวต์ส่วนขยาย ปรับปรุง : ฉันรู้วิธีการสร้างโรงงานปกติ คำถามนี้เกี่ยวกับโรงงานพิเศษที่สร้างอินสแตนซ์ของการใช้งานที่สร้างขึ้นสำหรับอินเตอร์เฟสส่วนขยายที่สร้างขึ้น นี่คือขั้นตอนที่ฉันต้องทำเพื่อให้มันใช้ได้ ฉันกำลังเพิ่มสิ่งเหล่านี้ดังนั้นผู้ที่พยายามตอบคำถามไม่จำเป็นต้องลงรายละเอียดเหล่านั้น คำถามของฉันคือวิธีการหรือทำไมมันทำงาน ขั้นตอนในการเปิดเผยแอตทริบิวต์ส่วนขยายผ่านเอนทิตี API: สร้างetc/extension_attributes.xmlที่เพิ่มคุณสมบัติให้กับส่วนติดต่อนิติบุคคล สร้างปลั๊กอินเพื่อเพิ่มค่าคุณลักษณะให้กับExtensionAttributesอินสแตนซ์เอนทิตี ในการทำจุดที่สองExtensionAttributesจำเป็นต้องใช้อินสแตนซ์เอนทิตี ด้วยเหตุนี้ปลั๊กอินจึงขึ้นอยู่กับโรงงานซึ่งตัวจัดการวัตถุส่งผ่าน DI สำหรับตัวอย่างรายการที่Magento\Quote\Api\Data\CartItemExtensionFactoryจะต้องมีการใช้ ฉันเดาว่าประเภทของโรงงานนี้จะต้องเป็นตัวกระตุ้นให้เกิดเวทย์มนตร์ วีโอไอพีจะสร้างส่วนต่อประสานการจับคู่\Magento\Quote\Api\Data\CartItemExtensionInterfaceกับ setters และ getters สำหรับคุณลักษณะส่วนขยายทั้งหมด อย่างไรก็ตามดูเหมือนจะไม่สร้างการใช้งานที่เป็นรูปธรรมสำหรับอินเทอร์เฟซนั้น ที่ให้เช่า PHPS รูปแบบไม่เห็น วีโอไอพีรวบรวมข้อมูลที่จำเป็นในการสร้างชั้นเรียนได้อย่างไร? วิธีการอินเตอร์เฟสที่สร้างขึ้นสามารถถูกเรียกบนอินสแตนซ์ที่เป็นรูปธรรมได้อย่างไร มันเป็นคลาสที่เพิ่งถูกสร้างขึ้นในหน่วยความจำเท่านั้น? ฉันมีความสุขที่ได้ผล แต่ก็ไม่เป็นที่น่าพอใจ ความสามารถของ Magentos ในการใช้คุณสมบัติที่สร้างขึ้นโดยอัตโนมัติโดยส่วนขยายเป็นปัจจัยสำคัญประการหนึ่งต่อความสำเร็จ ในฐานะนักพัฒนาโมดูลฉันเชื่อว่าฉันต้องเข้าใจกระบวนการทั้งหมดอย่างถี่ถ้วน ฉันควรจะมีเวลาหรือเปล่าที่ฉันจะขุดมันด้วยตัวเอง แต่ฉันอยากได้ถ้าฉันจะได้รับคำอธิบาย UPDATE 2 : เอาเวลาน้อยในการอ่านและ\Magento\Framework\Api\Code\Generator\ExtensionAttributesInterfaceGenerator …

3
คุณสมบัติไม่มีตัวตั้งค่าที่สอดคล้องกันในคลาส Magento \ Quote \ Api \ Data \ AddressInterface ขณะเปลี่ยนขั้นตอนชำระเงิน
1 - ฉันเพิ่มแอตทริบิวต์ eav ให้กับ customer_address $attributesInfo = [ 'reference' => [ 'label' => 'Reference', 'type' => 'varchar', 'input' => 'text', 'position' => 100, 'visible' => true, 'required' => false, ], ]; foreach ($attributesInfo as $attributeCode => $attributeParams) { $customerSetup->addAttribute('customer_address', $attributeCode, $attributeParams); } 2 - ฉันเพิ่มแอตทริบิวต์ส่วนขยายในโมดูลของฉัน <extension_attributes for="Magento\Quote\Api\Data\AddressInterface"> <attribute code="reference" …


2
Magento 2: อะไรคือความแตกต่างระหว่างแอตทริบิวต์ส่วนขยายและคุณสมบัติที่กำหนดเอง?
ฉันมีคำถามในใจว่าอะไรคือความแตกต่างที่แน่นอนระหว่างแอตทริบิวต์ส่วนขยายและแอตทริบิวต์ที่กำหนดเอง ? ใครที่นี่ที่สามารถให้ความคิดกับฉันได้บ้าง!

3
วิธีที่ถูกต้องในการใช้งาน getExtensionAttributes ()
ฉันสงสัยว่าอะไรคือวิธีที่เหมาะสมในการนำโมเดล EAV ที่ขยายได้ ฉันเห็นว่าในMagento\Catalog\Model\ProductวิธีการgetExtensionAttributes()ใช้งานเช่นนี้ public function getExtensionAttributes() { $extensionAttributes = $this->_getExtensionAttributes(); if (!$extensionAttributes) { return $this->extensionAttributesFactory->create('Magento\Catalog\Api\Data\ProductInterface'); } return $extensionAttributes; } แต่สำหรับคนอื่น ๆ เช่นลูกค้าหรือรุ่นหมวดหมู่มันเป็นเพียงแค่ public function getExtensionAttributes() { return $this->_getExtensionAttributes(); } ซึ่งสามารถนำไปสู่ผลลัพธ์NULLถ้าคีย์extension_attributesไม่ได้ตั้งค่าก่อน ในทางปฏิบัติฉันต้องการคนแรก วิธีนี้ทำให้ฉันมั่นใจได้เสมอว่าจะได้รับอินสแตนซ์Magento\Framework\Api\ExtensionAttributesInterfaceแม้ว่าตัวแบบนั้นเพิ่งจะถูกทำให้เป็นตัวอย่าง แต่ทำไมมันไม่ใช้ในโมดูลอื่นแล้ว? เป็นการแยกแบบจำลองข้อมูลใหม่ที่เราเห็นในโมดูลลูกค้าหรือไม่ ถ้าเป็นเช่นนั้นเราควรจะเริ่มต้นคุณลักษณะส่วนขยายได้อย่างไร

2
Magento 2 วิธีการบันทึกฟิลด์ที่กำหนดเองเพิ่มเข้ามาในรูปแบบของกลุ่มลูกค้า?
upgradeSchema.phpฉันได้เพิ่มฟิลด์ที่กำหนดเองบางอย่างเพื่อให้รูปแบบของกลุ่มลูกค้าโดยใช้ หลังจากนั้นฉันพบว่ามีการบันทึกฟิลด์ดั้งเดิมเช่นรหัสกลุ่มลูกค้าและรหัสภาษีโดยใช้วิธีการตั้งค่าใน API ที่ให้ไว้ มันแตกต่างอย่างสิ้นเชิงจาก Magento 1.X ที่ใช้ setXXX () เพื่อบันทึก
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.