Saya mencoba menjadikan status ulasan sebagai approved
ganti pending
ketika pengguna mempostingnya di frontend di Magento 2.
Dan saya mengambil pendekatan ini. Buat sebuah plugin sebelumnya, hanya tersedia di daerah frontend, untuk metode setStatusId
untuk Magento\Review\Model\Review
yang terlihat seperti ini
public function beforeSetStatusId(\Magento\Review\Model\Review $review, $status)
{
return [\Magento\Review\Model\Review::STATUS_APPROVED];
}
Bagi saya itu ide yang bagus. Dan itu akan berhasil karena saya mengembalikan status yang disetujui. Metode aktual kemudian harus mengambil ini sebagai parameter.
tapi yang mengejutkan saya itu tidak berhasil.
Kemudian saya menggali dan menemukan bahwa metode setStatusId
ini tidak ada dalam model ulasan. Ini disebut secara ajaib dan benar-benar berjalan setData('status_id', $status)
.
Saya melihat kemudian di interceptor yang dihasilkan, dan memang tidak ada setStatusId
metode.
Bagaimana saya bisa memasang magic getter / setters di magento 2? Apakah itu mungkin?
Catatan: Saya tidak memerlukan solusi untuk membuat ulasan disetujui secara otomatis. Saya tahu saya bisa mengambil pendekatan lain, seperti save_before
acara. Ini tidak penting untuk saat ini.
sumber
Saya pernah punya masalah yang sama. Saya berakhir dengan pluginize -metode
setData()
, meskipun menurut saya yang menghasilkan pemborosan sumber daya yang luar biasa ... :-(sumber
setData
panggilan. Ini tidak sempurna tetapi sedikit lebih baik daripada menggunakansetData
. Mungkin Anda bisa mengubah pendekatan Anda dan tidur sedikit lebih baik di malam hari. :)