Saya melihat bahwa di cabang berkembang dari Magento 2 repo metode load
dan save
dari Magento\Framework\Model\AbstractModel
kelas sudah usang.
Tetapi ada trilyun kelas di inti yang memperluas kelas ini dan menggunakan save
dan load
.
Saat membuat modul saya sendiri untuk bagian CRUD dari entitas saya, saya mengikuti pedoman yang sama dengan modul inti.
Tetapi karena metode ini sudah usang saya lebih suka dipersiapkan untuk masa depan.
Apa yang harus saya gunakan daripada mereka? Atau saya harus memperpanjang sesuatu yang lain?
57
Jawaban:
Anda harus menggunakan Kontrak Layanan Modul.
Misalnya untuk produk Anda harus menggunakan ProductRepositoryInterface
Jika Kontrak Layanan Modul tidak tersedia, Anda dapat menggunakan ResourceModel untuk menyimpan entitas.
sumber
ProductRepositoryInterface
masih menggunakanload
metodeget
dangetById
. Haruskah saya menggunakan model sumber daya untuk modul saya daripadaload
metode ini ?Dari apa yang saya pahami, apa yang akan terjadi adalah Magento akan beralih ke hydrator
extract()
danhydrate()
metode.Tautan ini dulu berfungsi tetapi sepertinya tim Magento mengembalikannya: https://github.com/magento/magento2/blob/develop/lib/internal/Magento/Framework/Model/Entity/EntityHydrator.php
Anda dapat menemukan riwayat komit di sini: https://github.com/magento/magento2/tree/09132da06e18dde0f90aabfc962db2bc19b64f3c/lib/internal/Magento/Framework/Model/Entity
File-file penting adalah:
EntityHydrator.php
EntityMetadata.php
HydratorInterface.php
MetadataPool.php
Saya juga menyarankan Anda memeriksa file di bawah
Action
folder dan jugaSequence
file.Dari apa yang saya mengerti (saya mungkin benar-benar salah di sini):
Action
folder adalah tindakan CRUDSequence
file yang iterator?Itu adalah percakapan yang terjadi beberapa saat yang lalu (apakah Alan Storm yang menyebutkannya? Tidak ingat) jadi saya tidak yakin apakah tim Magento masih berjalan seperti itu.
Memperbarui
Dari penelitian saya, tiket Magento internal mengenai perubahan ini adalah MAGETWO-50676, berikut adalah komitmen terkait yang berhasil saya temukan:
Mungkin ada lebih banyak TBH, tetapi saya tidak ingin menelusuri seluruh repo untuk pesan komit ^^
Jika Anda tidak terbiasa dengan hydrator, saya sarankan Anda memeriksa tautan itu: http://www.webconsults.eu/blog/entry/108-What_is_a_Hydrator_in_Zend_Framework_2
Perbarui dari 2.1
Magento sekarang menggunakan
EntityManager
kelas untuk menggantikan warisan Anda dapat menemukan informasi lebih lanjut di sini: Magento 2.1: menggunakan manajer entitassumber
load()/save()
ke hydrator. Saya menganggapSequences
pekerjaan seperti iterator danActions
merupakan tindakan CRUDLihat deskripsi dalam kode kelas https://github.com/magento/magento2/blob/2.1/lib/internal/Magento/Framework/Model/AbstractModel.php#L626
sumber
load
save
dandelete
akan pergi?Sebuah alternatif untuk Metode Beban Depresi Magento 2 adalah metode pemuatan model sumber daya.
di sini parameter pertama adalah objek model dan parameter kedua adalah id yang ingin Anda muat.
Sebuah alternatif untuk Magento 2 Deprecated Save Method adalah metode save model sumber daya.
metode save hanya menerima satu parameter yang merupakan objek model Anda.
sumber