Bermain-main dengan Magento 2 tetapi mengalami masalah saya tidak bisa membungkus kepala saya. Manajer objek mencoba untuk membuat instance kelas abstrak, ini memberikan kesalahan fatal. Apakah ada yang tahu apa yang menyebabkan ini atau mengarahkan saya ke arah yang benar?
Kesalahan
Fatal error: Cannot instantiate abstract class Magento\Framework\Model\Resource\AbstractResource in /lib/internal/Magento/Framework/ObjectManager/Factory/Dynamic/Developer.php on line 75
Masalah
Modul saya memiliki model yang memperpanjang \Magento\Quote\Model\Quote
. Konstruktor model ini memiliki baris berikut menyuntikkan ini:
\Magento\Framework\Model\Resource\AbstractResource $resource = null,
.
Pengontrol yang membuat instance model memperluas \Magento\Backend\App\Action
dan menggunakan $this->_objectManager->create()
untuk membuat instance model.
Hal yang saya tidak dapat membungkus kepala saya adalah jika saya instantiate model Magento itu hanya berfungsi tetapi jika saya instantiate model saya ia mencoba untuk instantiate kelas abstrak ini melempar kesalahan di atas. Apa yang memberitahu manajer objek untuk melakukan ini dan bagaimana saya bisa menyelesaikan masalah saya?
Pikiran pertama saya adalah Magento menggunakan di.xml
untuk mengganti ini, menjalankan ini atau sesuatu, ini tidak terjadi.
Terima kasih telah meluangkan waktu untuk membaca ini. Setiap bantuan atau masukan tentang masalah ini sangat kami hargai.
sumber
__construct
metode model Anda.Jawaban:
Ini dapat terjadi jika sub-kelas Anda menambahkan dependensi baru setelah dependensi opsional yang ada dari kelas induk.
Cuplikan dari orang tua
Bagaimana kode dapat mengubah apa yang opsional
Manajer Objek Magento 2 akan mencoba menyuntikkan parameter yang diperlukan. Jadi ini bisa terjadi jika Anda menambahkan parameter yang diperlukan di akhir konstruktor.
Anda dapat memperbaikinya dengan memindahkan parameter yang diperlukan baru di atas yang opsional.
sumber
Kadang-kadang beberapa modul diperbarui dan referensi di bawah / dihasilkan belum diperbarui.
Lakukan saja
bin/magento setup:di:compile
dan coba lagi.(Bekerja untuk saya ketika memperbarui modul pembayaran dan / checkout tidak memuat)
sumber