J'essaie de faire en sorte que le statut d'un examen soit approvedau lieu du pendingmoment où l'utilisateur le poste dans le frontend de Magento 2.
Et j'ai adopté cette approche. Créer un plug - in avant, disponible uniquement dans la zone frontend, pour la méthode setStatusIddes Magento\Review\Model\Reviewqui ressemble à ceci
public function beforeSetStatusId(\Magento\Review\Model\Review $review, $status)
{
return [\Magento\Review\Model\Review::STATUS_APPROVED];
}
Cela m'a semblé une bonne idée. Et cela devrait fonctionner puisque je retourne le statut approuvé. La méthode réelle devrait alors prendre cela en paramètre.
mais à ma grande surprise, cela n'a pas fonctionné.
Ensuite, j'ai déterré et constaté que la méthode setStatusIdn'existe pas dans le modèle d'examen. Il est appelé par magie et fonctionne en fait setData('status_id', $status).
J'ai alors jeté un œil dans l'intercepteur généré, et en effet il n'y a pas de setStatusIdméthode.
Comment puis-je pluginiser les getters / setters magiques dans magento 2? Est-ce que c'est possible?
Remarque: Je n'ai pas besoin d'une solution pour rendre les avis approuvés automatiquement. Je sais que je peux adopter d'autres approches, comme les save_beforeévénements. Ce n'est pas important pour l'instant.