Kesalahan fatal: Tidak dapat menginstal antarmuka di Magento 2?


21

Sebagai bagian dari membuat produk bundel secara terprogram di Magento 2. Saya mendapatkan kesalahan di bawah ini. Bahkan saya menghapus var / cache dan generasi.

Ini mungkin pertanyaan duplikat tetapi tidak ada jawaban yang berfungsi untuk masalah ini.

Kesalahan fatal: Tidak dapat membuat antarmuka Magento \ Katalog \ Api \ Data \ ProductExtensionInterface di \ ObjectManager \ Factory \ Dynamic \ Developer.php on line 73

Digunakan kode di bawah ini sebagai referensi tautan

$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);

Saya menggunakan manajer objek untuk tujuan sementara / cepat, akan mengubah manajer objek menjadi perintah konstruktor.

Siapa pun dapat membantu saya dalam masalah ini.

Jawaban:


20

Saya pikir Anda belum menyebut preferensi di di.xml Anda. Saya juga menghadapi masalah yang sama ketika saya membuat modul file xml konfigurasi khusus.

Saya mendapatkan masalah ketika saya memanggil kode ini:

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

Di bawah ini adalah contoh kode yang telah saya tambahkan di di.xml saya , mungkin dapat membantu Anda untuk mendapatkan referensi:

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

Di sini saya telah mengimplementasikan antarmuka di Training\Test\Model\Configkelas dan getMyNodeInfo()metode saya didefinisikan dalam Model itu.

Jadi berdasarkan preferensi yang ditentukan dalam di.xml kode ->get('Training\Test\Model\Config\ConfigInterface');akan membuat objek bertipe Training\Test\Model\Config.


7

Anda sebaiknya tidak menggunakan ObjectManager.

Kumpulkan dependensi Anda melalui _constructor.

Jika antarmuka Anda tidak akan dimuat, periksa di.xmldan validasi bahwa preferensi tersedia.


@ David Lambauer Bahkan saya menggunakan constructor saya mendapatkan Can tidak instantiate antarmuka Magento \ Katalog \ Api \ Data \ ProductExtensionInterface di Magento \ framework \ ObjectManager \ Pabrik \ Dinamis \ Developer.php on line 73
Krishna ijjada

1
Apakah Anda menambahkan pabrik ke pernyataan penggunaan Anda? gunakan Magento \ Catalog \ Api \ Data \ ProductExtensionInterfaceFactory;
David Lambauer

6

Saya berjuang dengan ini dan kemudian menemukan solusi yang bekerja untuk saya dalam dokumentasi di sini.

Pastikan untuk menambahkan antarmuka Anda sebagai preferensi (dengan benar) di di.xml.


2
Masalah saya adalah bahwa saya meletakkan di.xml di folder etc / frontend bukannya root dll secara tidak sengaja, tetapi jawaban Anda membuat saya menemukannya.
KyleBunga
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.