Sto cercando di rendere lo stato di una recensione al approved
posto di pending
quando l'utente lo pubblica nel frontend in Magento 2.
E ho adottato questo approccio. Crea un plug-in precedente, disponibile solo nell'area front-end, per il metodo setStatusId
per quello Magento\Review\Model\Review
che appare così
public function beforeSetStatusId(\Magento\Review\Model\Review $review, $status)
{
return [\Magento\Review\Model\Review::STATUS_APPROVED];
}
Mi è sembrato una buona idea. E dovrebbe funzionare poiché sto restituendo lo stato approvato. Il metodo effettivo dovrebbe quindi selezionarlo come parametro.
ma con mia sorpresa non ha funzionato.
Quindi ho scavato e ho scoperto che il metodo setStatusId
non esiste nel modello di revisione. Si chiama magicamente e funziona davvero setData('status_id', $status)
.
Ho dato un'occhiata quindi all'intercettore generato, e in effetti non esiste un setStatusId
metodo.
Come posso plug-in i getter / setter magici in magento 2? È anche possibile?
Nota: non ho bisogno di una soluzione per rendere le recensioni auto-approvate. So di poter adottare altri approcci, come gli save_before
eventi. Questo non è importante per ora.