Önemli hata: Magento 2'de arayüz başlatılamıyor mu?


21

Magento 2'de programlı olarak paket ürün yaratmanın bir parçası olarak, aşağıdaki hatayı alıyorum. Hatta var / cache ve nesil kaldırıldı.

Bu yinelenen bir soru olabilir, ancak yanıtın hiçbiri bu sorun için çalışmıyor.

Önemli hata: Arabirim somutlaştırılamıyor Magento \ Katalog \ Api \ Data \ ProductExtensionInterface, \ ObjectManager \ Factory \ Dynamic \ Developer.php on line 73

Bağlantı referansı olarak aşağıdaki kod kullanılır

$productExtension = $objectManager->create(\Magento\Catalog\Api\Data\ProductExtensionInterface::class);
$option = $objectManager->create(\Magento\Bundle\Api\Data\OptionInterface::class);
$option->setTitle('Size');
$option->setType('radio');
$option->setRequired(true);
$option->setPosition(1);
//$option->setProductLinks($links);
$productExtension->setBundleOptions([$option]);
$_product->setExtensionAttributes($productExtension);

Nesne yöneticisini geçici / hızlı amaçlarla kullanıyorum, nesne yöneticisini yapıcı tedbirine dönüştürecek.

Herhangi biri bu konuda bana yardımcı olabilir.

Yanıtlar:


21

Bence di.xml'deki tercihinizden bahsetmediniz. Özel yapılandırma xml dosya modülü oluştururken de aynı sorunla karşılaştım.

Bu kodu çağırdığımda sorunu aldım:

$testConfig = $this->_objectManager->get('Training\Test\Model\Config\ConfigInterface');
$myNodeInfo = $testConfig->getMyNodeInfo();

Aşağıda benim di.xml içinde eklediğim örnek kod , referans almanıza yardımcı olabilir:

<preference for="Training\Test\Model\Config\ConfigInterface" type="Training\Test\Model\Config" />

Burada arabirimi Training\Test\Model\Configsınıfta uyguladım ve getMyNodeInfo()yöntemim bu Modelde tanımlandı.

Bu nedenle, di.xml dosyasında tanımlanan tercihe bağlı olarak kod ->get('Training\Test\Model\Config\ConfigInterface');, türünde bir nesne oluşturur Training\Test\Model\Config.


7

Kullanmamalısınız ObjectManager.

Bağımlılıklarınızı toplayın _constructor.

Arayüzünüzün hala yüklenmemesi durumunda, di.xmltercihinizi kontrol edin ve doğrulayın.


David Lambauer Ben bile yapıcı kullanılan @ i Magento \ Katalog \ Api \ Data \ ProductExtensionInterface magento \ çerçeve \ ObjectManager \ Fabrikası \ Dinamik \ Developer.php arayüz hat 73 üzerinde değil örneğini alıyorum
Krishna ijjada

1
Fabrikayı kullanım beyanlarınıza eklediniz mi? Magento \ Catalogue \ Api \ Data \ ProductExtensionInterfaceFactory kullanın;
David Lambauer

6

Bununla mücadele ettim ve daha sonra buradaki belgeselde benim için çalışan bir çözüm buldum .

Arabiriminizi di.xml'de bir tercih olarak (doğru) eklediğinizden emin olun.


2
Benim sorunum di.xml vb kök yerine yanlışlıkla etc / frontend klasörüne yerleştirmek oldu, ama cevabınız beni bulmaya götürdü.
KyleBunga
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.