Ich versuche , den Status einer Überprüfung zu machen sein approved
statt , pending
wenn die Benutzer Beiträge im Frontend in Magento 2.
Und ich diesen Ansatz nahmen. Erstellen Sie ein Vorher-Plugin, das nur im Frontend-Bereich verfügbar ist, für die Methode, setStatusId
die Magento\Review\Model\Review
so aussieht
public function beforeSetStatusId(\Magento\Review\Model\Review $review, $status)
{
return [\Magento\Review\Model\Review::STATUS_APPROVED];
}
Es kam mir wie eine gute Idee vor. Und es sollte funktionieren, da ich den genehmigten Status zurückgebe. Die eigentliche Methode sollte dies dann als Parameter aufnehmen.
aber zu meiner Überraschung hat es nicht funktioniert.
Dann habe ich ausgegraben und festgestellt, dass die Methode setStatusId
im Überprüfungsmodell nicht vorhanden ist. Es heißt magisch und läuft tatsächlich setData('status_id', $status)
.
Ich habe mir dann den generierten Interceptor angesehen, und tatsächlich gibt es keine setStatusId
Methode.
Wie kann ich die Magic Getter / Setter in Magento 2 einbinden? Ist das überhaupt möglich?
Hinweis: Ich benötige keine Lösung, um die Bewertungen automatisch zu genehmigen. Ich weiß, dass ich andere Ansätze verfolgen kann, wie die save_before
Ereignisse. Dies ist vorerst nicht wichtig.
quelle
Ich hatte einmal ein ähnliches Problem. Am Ende habe ich die Methode Pluginisiert
setData()
, obwohl dies meiner Meinung nach eine enorme Verschwendung von Ressourcen erzeugt ... :-(quelle
setData
Aufrufe. Es ist nicht perfekt, aber ein bisschen besser als zu benutzensetData
. Vielleicht können Sie auch Ihren Ansatz ändern und nachts etwas besser schlafen. :)