Я пытаюсь сделать так, чтобы статус отзыва был approved
вместо того, pending
чтобы пользователь публиковал его во внешнем интерфейсе в Magento 2.
И я воспользовался этим подходом. Создание до плагин, доступный только в области внешнего интерфейса, для метода setStatusId
для того, Magento\Review\Model\Review
что выглядит следующим образом
public function beforeSetStatusId(\Magento\Review\Model\Review $review, $status)
{
return [\Magento\Review\Model\Review::STATUS_APPROVED];
}
Это показалось мне хорошей идеей. И это должно работать, так как я возвращаю одобренный статус. Фактический метод должен затем выбрать это в качестве параметра.
но, к моему удивлению, это не сработало.
Затем я выкопал и обнаружил, что метод setStatusId
не существует в модели обзора. Это волшебно называется, и это на самом деле работает setData('status_id', $status)
.
Я посмотрел тогда в сгенерированном перехватчике, и, действительно, нет setStatusId
метода.
Как я могу подключить магические геттеры / сеттеры в magento 2? Это вообще возможно?
Примечание: мне не нужно решение для автоматического подтверждения отзывов. Я знаю, что могу использовать другие подходы, такие как save_before
события. Это не важно сейчас.
источник
У меня когда-то была похожая проблема. Я закончил с плагином -методом
setData()
, хотя, по моему мнению, это порождает огромную трату ресурсов ... :-(источник
setData
вызовов. Это не идеально, но это немного лучше, чем использоватьsetData
. Может быть, вы можете изменить свой подход и спать немного лучше ночью. :)