J'essaie de faire en sorte que le statut d'un examen soit approved
au lieu du pending
moment 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 setStatusId
des Magento\Review\Model\Review
qui 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 setStatusId
n'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 setStatusId
mé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.