Yang harus Anda lakukan adalah meminta pabrik model yang diinginkan dalam konstruktor. Ini akan secara otomatis dihasilkan ketika Anda menjalankan Magento atau kompiler.
[sunting satu tahun kemudian]
Bahkan jika jawaban di atas berfungsi, itu bukan praktik terbaik. Untuk cara yang benar melakukannya lihat jawaban Anton.
mendapat kesalahan - Kelas Magento \ Framework \ ObjectManager tidak ada
Anas Mansuri
5
Secara teknis jika Anda memiliki sebuah instance dari \Magento\Framework\ObjectManagerAnda dapat memanggil createdari getdan ini akan memberikan objek yang Anda inginkan. Tapi itu benar-benar tergantung pada di mana Anda ingin menggunakan ini karena Magento 2 bergeser ke injeksi ketergantungan melalui konstruktor .
Jawaban:
Magento secara ketat mengecilkan penggunaan ObjectManager secara langsung. Ini menyediakan kelas layanan yang abstrak untuk semua skenario.
Untuk semua non-injeksi (model) Anda harus menggunakan pabrik:
Yang harus Anda lakukan adalah meminta pabrik model yang diinginkan dalam konstruktor. Ini akan secara otomatis dihasilkan ketika Anda menjalankan Magento atau kompiler.
sumber
Anda bisa melakukannya seperti ini:
tetapi Anda harus memastikan bahwa
_objectManager
anggota itu ada.Di sebagian besar kelas seharusnya, tetapi jika tidak menyuntikkannya di konstruktor. Seperti ini:
[sunting satu tahun kemudian]
Bahkan jika jawaban di atas berfungsi, itu bukan praktik terbaik. Untuk cara yang benar melakukannya lihat jawaban Anton.
sumber
Secara teknis jika Anda memiliki sebuah instance dari
\Magento\Framework\ObjectManager
Anda dapat memanggilcreate
dariget
dan ini akan memberikan objek yang Anda inginkan. Tapi itu benar-benar tergantung pada di mana Anda ingin menggunakan ini karena Magento 2 bergeser ke injeksi ketergantungan melalui konstruktor .sumber