在后端加载目录设置时出现致命错误

pm.*_*pm. 2 php zend-framework magento

在从设置 - >设置菜单中选择目录时,在新的1.5.0.1 Magento安装上,我收到以下错误:

致命错误:第33行/ my-install-dir /app/code/core/Mage/Adminhtml/Model/System/Config/Source/Price/Step.php中未定义的类常量'RANGE_CALCULATION_AUTO'

检查Step.php,它看起来没有损坏,包含以下内容:

class Mage_Adminhtml_Model_System_Config_Source_Price_Step
{

    public function toOptionArray()
    {
        return array(
            array(
               'value' => Mage_Catalog_Model_Layer_Filter_Price::RANGE_CALCULATION_AUTO,
               'label' => Mage::helper('adminhtml')->__('Automatic')
            ),
            array(
                'value' => Mage_Catalog_Model_Layer_Filter_Price::RANGE_CALCULATION_MANUAL,
                'label' => Mage::helper('adminhtml')->__('Manual')
            ),
        );
    }

}`
Run Code Online (Sandbox Code Playgroud)

任何人都知道这个错误或如何解决它?

Ala*_*orm 6

PHP抱怨它找不到RANGE_CALCULATION_AUTO类上定义的常量Mage_Catalog_Model_Layer_Filter_Price

根据您上面的评论,听起来您已经检查过该文件

app/code/core/Mage/Catalog/Model/Layer/Filter/Price.php
Run Code Online (Sandbox Code Playgroud)

确保定义了正确的常量.

const RANGE_CALCULATION_AUTO    = 'auto';
Run Code Online (Sandbox Code Playgroud)

基于此,我的猜测就是为这个类加载了不同的 Price.php.如果这可能发生

  1. 有人在community或中放置了不同的版本local

  2. 有人嘲笑Magento正常猴子生意之外的包含路径

检查文件

app/community/core/Mage/Catalog/Model/Layer/Filter/Price.php
app/local/core/Mage/Catalog/Model/Layer/Filter/Price.php
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,请添加一些临时调试代码

app/code/core/Mage/Adminhtml/Model/System/Config/Source/Price/Step.php
Run Code Online (Sandbox Code Playgroud)

使用反射来确定PHP正在加载类的文件

class Mage_Adminhtml_Model_System_Config_Source_Price_Step
{

    public function toOptionArray()
    {
        //NEW LINES HERE
        $r = new ReflectionClass('Mage_Catalog_Model_Layer_Filter_Price');
        var_dump($r->getFileName());
        //echo $r->getFileName(); // if too long for var_dump
        exit("Bailing at line ".__LINE__." in ".__FILE__);
        //END NEW LINES
        return array(
            array(
               'value' => Mage_Catalog_Model_Layer_Filter_Price::RANGE_CALCULATION_AUTO,
               'label' => Mage::helper('adminhtml')->__('Automatic')
            ),
            array(
                'value' => Mage_Catalog_Model_Layer_Filter_Price::RANGE_CALCULATION_MANUAL,
                'label' => Mage::helper('adminhtml')->__('Manual')
            ),
        );
    }

}`      
Run Code Online (Sandbox Code Playgroud)

这将转储出一个文件路径,该路径指向PHP从中加载类的确切位置,这将使您获得所需的位置.