Başımı uzatma öznitelikleri kullanarak, örneğin alıntı öğeleri için sarmak istiyorum.
Magento 1'deki bir kurulum sınıfını kullanarak böyle bir varlık için özel bir özellik eklemek sorun değil, bu sorunun ne olduğu değil.
Şu anda sihir, bir uzantı tarafından varlıklar API'si aracılığıyla bir uzantı niteliği olarak eklenen bir özelliği göstermek istediğimde beni şaşırtıyor.
GÜNCELLEME : Normal fabrikaların nasıl üretildiğini biliyorum. Bu soru, üretilen eklenti öznitelik arayüzleri için oluşturulan uygulamaları örnekleyen özel fabrikalar ile ilgilidir.
İşte işe almak için attığım adımlar. Bunları ekliyorum, böylece cevaplamaya çalışan her kim bu ayrıntılara girmek zorunda kalmayacak.
Benim sorum NASIL veya NEDEN işe yarıyor.
Bir varlık API'siyle bir uzantı niteliğini gösterme adımları:
etc/extension_attributes.xml
Varlık arabirimine nitelik ekleyen bir oluşturma- Öznitelik değerini varlıklar
ExtensionAttributes
örneğine eklemek için bir eklenti oluşturun .
İkinci noktayı yapabilmek için varlıklar ExtensionAttributes
örneğine ihtiyaç vardır. Bu sebeple eklenti, nesne yöneticisinin DI üzerinden tedarik ettiği bir fabrikaya bağlıdır.
Teklif kalemi için örnek Magento\Quote\Api\Data\CartItemExtensionFactory
kullanılmalıdır.
Sanırım bu fabrikanın türü bir şekilde kuşak sihrinin tetikleyicisi olmalı.
Magento daha sonra \Magento\Quote\Api\Data\CartItemExtensionInterface
tüm uzatma özellikleri için ayarlayıcılar ve alıcılarla eşleşen arayüzü oluşturur .
Ancak, bu arayüz için somut bir uygulama oluşturmuyor gibi görünüyor. Kiralamada PHPStorm bunu görmüyor.
Magento, sınıfı oluşturmak için ihtiyaç duyduğu bilgileri nasıl toplar? Oluşturulan arayüz yöntemleri somut bir durumda nasıl çağrılabilir? Sadece hafızada üretilen bir sınıf mı?
İşe yaradığı için mutluyum ama bu gerçekten tatmin edici değil. Magentos'un uzantılar tarafından otomatik olarak yaratılan öznitelikleri kullanabilmesi, başarısının anahtar faktörlerinden biridir. Bir modül geliştiricisi olarak, tüm süreci tam olarak anlamam gerektiğine inanıyorum.
Vaktim varsa, sadece kendimle uğraşırdım, ama bir açıklama yapabilseydim tercih ederdim.
GÜNCELLEME 2 : aracılığıyla okumak için biraz zaman aldı \Magento\Framework\Api\Code\Generator\ExtensionAttributesInterfaceGenerator
ve \Magento\Framework\Api\Code\Generator\ExtensionAttributesGenerator
. Şimdi en azından neler olup bittiği hakkında kaba bir fikrim var. Kimse beni yenemezse, bir sürecin tam bir tanımını bir noktada yazacağım, bunun faydalı bir referans olacağını düşünüyorum.