我正在使用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>
但是得到了以前的价值。在“保存评论”之后调用什么事件?是否正确?
请告诉我我错了。
提前致谢。