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 …