Magento管理屏幕添加新的审核按钮不起作用并生成404错误


Magento admin screens add new review button not working and generates a 404 error

Magento Enterprise Edition,版本1.13.1.0

无法通过管理屏幕添加新产品评论。在"管理"中单击"添加新评论"按钮时,菜单目录:评论和评级:客户评论:所有评论,并在Magento中生成异常,然后显示404页面。

这是一个干净的Magento安装,没有自定义。

关于如何解决这个问题的任何想法?

类app/code/core/Mage/Adminhtml/Block/Review/Rating/Detailed.php,在第74行调用setStoreFilter(),使用硬编码的存储代码"default",当Magento中没有代码为"default"的商店时,它会生成异常,当错误页面关闭时,将管理员用户转发到404页面。

要重现该问题,请在Magento中创建第二个商店和相关商店视图,将"默认"商店代码更改为"mystorecode",然后转到管理菜单"目录>评论和评级>客户评论>所有评论",然后按"添加新评论"按钮。

建议的修复如下:

--- a/app/code/core/Mage/Adminhtml/Block/Review/Rating/Detailed.php
+++ b/app/code/core/Mage/Adminhtml/Block/Review/Rating/Detailed.php
@@ -68,10 +68,13 @@ class Mage_Adminhtml_Block_Review_Rating_Detailed extends Mage_Adminhtml_Block_T
                     ->addRatingOptions();
             } elseif (!$this->getIsIndependentMode()) {
+                $default_store = Mage::app()->getWebsite()->getDefaultStore();
                 $ratingCollection = Mage::getModel('rating/rating')
                     ->getResourceCollection()
                     ->addEntityFilter('product')
-                    ->setStoreFilter(Mage::app()->getStore('default')->getId())
+                    ->setStoreFilter( ($default_store) 
+                                      ? $default_store->getId() 
+                                      : Mage_Core_Model_App::ADMIN_STORE_ID )
                     ->setPositionOrder()
                     ->load()
                     ->addOptionToItems();

只需替换:

                 $ratingCollection = Mage::getModel('rating/rating')
                     ->getResourceCollection()
                     ->addEntityFilter('product')
                     ->setStoreFilter(Mage::app()->getStore('default')->getId())
                     ->setPositionOrder()
                     ->load()
                     ->addOptionToItems();

跟:

                 $default_store = Mage::app()->getWebsite()->getDefaultStore();
                 $ratingCollection = Mage::getModel('rating/rating')
                     ->getResourceCollection()
                     ->addEntityFilter('product')
                     ->setStoreFilter( ($default_store) 
                                       ? $default_store->getId() 
                                       : Mage_Core_Model_App::ADMIN_STORE_ID )
                     ->setPositionOrder()
                     ->load()
                     ->addOptionToItems();

希望这能解决问题。

Magento团队在较新版本中解决此问题,他们添加了此代码

->setStoreFilter(Mage::app()->getDefaultStoreView()->getId())

而不是

->setStoreFilter(Mage::app()->getStore('default')->getId())

我认为升级版本的最佳主意