Tôi đang sử dụng phiên bản Magento 1.8. Tôi đã viết một trình quan sát phải chạy khi quản trị viên lưu đánh giá sản phẩm với trạng thái "Đã phê duyệt". Và tôi đã tạo một thuộc tính xếp hạng cho mọi sản phẩm với multiselect và nó sẽ tự động cập nhật mỗi khi quản trị viên lưu đánh giá cho một sản phẩm.
Lưu ý: Đánh giá trong Báo cáo / Đánh giá / Đánh giá sản phẩm.
vv / Mã cấu hình:
<review_save_after>
<observers>
<efkadminhtml>
<class>efkadminhtml/observer</class>
<method>ratingsUpdate</method>
</efkadminhtml>
</observers>
</review_save_after>
chế độ / Mã quan sát
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();
}
}
Khi quản trị viên đang cố lưu đánh giá cho một sản phẩm, mã người quan sát ở trên đang thực thi và đánh giá đang cập nhật chính xác nhưng sản phẩm đang nhận được giá trị đánh giá trước đó thay vì đánh giá cập nhật mới nhất.
Tôi đã viết <review_save_after>
nhưng nó nhận được giá trị trước đó. Sự kiện được gọi sau "Lưu đánh giá" Điều đó có đúng hay không?
Xin vui lòng cho tôi biết tôi sai ở đâu.
Cảm ơn trước.