Sto usando la versione Magento 1.8. Ho scritto un osservatore che deve essere eseguito quando admin salva una recensione del prodotto con lo stato "Approvato". E ho creato un attributo di classificazione per ogni prodotto con selezione multipla e dovrebbe aggiornarsi automaticamente ogni volta che l'amministratore salva la recensione per un prodotto.
Nota: le recensioni sono in Rapporti / Recensioni / Recensioni di prodotti.
Codice etc / Config.xml:
<review_save_after>
<observers>
<efkadminhtml>
<class>efkadminhtml/observer</class>
<method>ratingsUpdate</method>
</efkadminhtml>
</observers>
</review_save_after>
modalità / Codice osservatore
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();
}
}
Quando l'amministratore sta tentando di salvare la recensione per un prodotto, il codice di osservatore sopra è in esecuzione e la revisione si aggiorna in modo corretto ma il prodotto sta ottenendo il valore della revisione precedente anziché la revisione aggiornata più recente.
Ho scritto <review_save_after>
ma ottenendo un valore precedente. Come si chiama l'evento dopo "Salva recensione" È corretto o no?
Per favore, dimmi dove sbaglio.
Grazie in anticipo.