PHP – Magento管理员屏幕添加新的审查按钮不起作用,并生成404错误

Magento企业版,版本1.13.1.0

无法通过管理员屏幕添加新的产品评论.在管理员中单击“添加新审核”按钮时,菜单目录:评论和评级:客户评论:所有评论,并在Magento中生成例外,然后显示404页面.

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

有关如何解决此问题的任何想法?

解决方法:

第74行的块类app / code / core / Mage / Adminhtml / Block / Review / Rating / Detailed.php使用硬编码的商店代码“default”调用setStoreFilter(),当存在时会产生异常代码为“default”的Magento没有商店,当关闭错误页面时,将管理员用户转发到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();

希望这能解决问题.

上一篇:代码review还是需要再仔细点-一次crash异常分析的总结


下一篇:简单问题解决思路