ฉันต้องการห่อหัวของฉันไปรอบ ๆ โดยใช้คุณลักษณะส่วนขยายตัวอย่างเช่นสำหรับรายการราคา
ไม่มีปัญหาในการเพิ่มแอตทริบิวต์ที่กำหนดเองให้กับเอนทิตี้ดังกล่าวโดยใช้คลาสการตั้งค่าเช่นเดียวกับใน 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
\Magento\Framework\Api\Code\Generator\ExtensionAttributesGenerator
อย่างน้อยตอนนี้ฉันมีความคิดคร่าวๆว่าเกิดอะไรขึ้น หากไม่มีใครชนะฉันฉันจะเขียนคำอธิบายของกระบวนการทั้งหมด ณ จุดหนึ่งเพราะฉันคิดว่ามันจะเป็นข้อมูลอ้างอิงที่มีประโยชน์