Magento 1.8バージョンを使用しています。管理者がステータスが「承認済み」の製品レビューを保存するときに実行する必要があるオブザーバーを作成しました。そして、私はmultiselectを使用してすべての製品の格付け属性を作成し、管理者が製品のレビューを保存するたびに自動的に更新されるはずです。
注:レビューは、レポート/レビュー/製品レビューにあります。
etc / Config.xmlコード:
<review_save_after>
<observers>
<efkadminhtml>
<class>efkadminhtml/observer</class>
<method>ratingsUpdate</method>
</efkadminhtml>
</observers>
</review_save_after>
モード/オブザーバーコード
public function ratingsUpdate(Varien_Event_Observer $observer)
{
$object = $observer->getEvent()->getObject();
$statusId = $object->getStatusId();
if($statusId == 1) {
$common = Mage::getSingleton('catalog/common');
$attribute = $common->getAttribute('ratings');
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$productId = $object->getEntityPkValue();
$product = Mage::getModel('catalog/product')->load($productId);
$avgRating = Mage::getBlockSingleton('efkreports/product_allReviews')->getAvgReview($product->getId());
Mage::log($avgRating);
Mage::log($attribute->getOptionId(round($avgRating)));
$product->setRatings($attribute->getOptionId(round($avgRating)));
//$product->setRatings(round($avgRating));
$product->save();
}
}
管理者が製品のレビューを保存しようとすると、上記のオブザーバーコードが実行され、レビューは正しく更新されますが、製品は最新の更新されたレビューではなく、以前のレビュー値を取得しています。
私は書いた<review_save_after>
が、それは以前の値を取得しています。「レビューを保存」の後に呼び出されるイベントは何ですか?正しいですか?
どこが間違っているのか教えてください。
前もって感謝します。