2

我有一个 Magento 安装并在结帐页面上出现以下错误。

Call to undefined method Mage_Customer_Helper_Address::getAttributeValidationClass()

我已经检查Mage_Customer_Helper_Address了这个特定功能的类,并在类文档中进行了搜索。但是我也没有在文档中看到这种方法。谁能告诉我可能是什么问题?

它是 Magento 的内置方法吗?我是 Magento 新手,服务器上安装的版本是 1.4.2.0.

4

1 回答 1

3

难道是有一些扩展与1.4.2.0版本不兼容?例如,因为 Magento v. 1.7 在Mage_Customer_Helper_Address类中确实有这个方法。您可以创建一个覆盖助手并将此方法添加到其中:

/**
     * Get string with frontend validation classes for attribute
     *
     * @param string $attributeCode
     * @return string
     */
    public function getAttributeValidationClass($attributeCode)
    {
        /** @var $attribute Mage_Customer_Model_Attribute */
        $attribute = isset($this->_attributes[$attributeCode]) ? $this->_attributes[$attributeCode]
            : Mage::getSingleton('eav/config')->getAttribute('customer_address', $attributeCode);
        $class = $attribute ? $attribute->getFrontend()->getClass() : '';

        if (in_array($attributeCode, array('firstname', 'middlename', 'lastname', 'prefix', 'suffix', 'taxvat'))) {
            if ($class && !$attribute->getIsVisible()) {
                $class = ''; // address attribute is not visible thus its validation rules are not applied
            }

            /** @var $customerAttribute Mage_Customer_Model_Attribute */
            $customerAttribute = Mage::getSingleton('eav/config')->getAttribute('customer', $attributeCode);
            $class .= $customerAttribute && $customerAttribute->getIsVisible()
                ? $customerAttribute->getFrontend()->getClass() : '';
            $class = implode(' ', array_unique(array_filter(explode(' ', $class))));
        }

        return $class;
    }
于 2013-01-29T12:23:46.240 回答