我知道这里已经有几次被问过,但是我已经完成了答案,但仍然无法弄清楚为什么我不能覆盖Magento中的核心模型:
我试图覆盖Eav / Attribute / Data / Text.php,但它拒绝使用我的validateValue()
函数版本。
这是我的模型类/app/code/local/Hailstorm/Eav/Model/Attribute/Data/Text.php
class Hailstorm_Eav_Model_Attribute_Data_Text extends Mage_Eav_Model_Attribute_Data_Text {
public function validateValue($value) {
$attribute = $this->getAttribute();
echo "My validator for |" . $attribute->getAttributeCode() . "|!\n";
if ($attribute->getAttributeCode() == 'postcode') {
$countryId = $this->getExtractedData('country_id');
$optionalZip = Mage::helper('directory')->getCountriesWithOptionalZip();
if (!in_array($countryId, $optionalZip)) {
return parent::validateValue($value);
}
return true;
}
else {
return parent::validateValue($value);
}
}
}
这是我的config.xml /app/code/local/Hailstorm/Eav/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<hailstorm_eav>
<version>0.1.0</version>
</hailstorm_eav>
</modules>
<global>
<models>
<eav>
<rewrite>
<attribute_data_text>Hailstorm_Eav_Model_Attribute_Data_Text</attribute_data_text>
</rewrite>
</eav>
</models>
<hailstorm_eav>
<class>Hailstorm_Eav_Model</class>
</hailstorm_eav>
</global>
</config>
这是我的模块xml文件
/app/etc/modules/Hailstorm_Eav.xml
<?xml version="1.0"?>
<config>
<modules>
<hailstorm_eav>
<active>true</active>
<codepool>local</codepool>
</hailstorm_eav>
</modules>
</config>
我在这里已经完成了教程以及其他类似问题的答案,但我看不出我做错了什么!
感谢您的帮助
答案 0 :(得分:5)
使用此
<codePool>local</codePool>
答案 1 :(得分:0)
issue in class declaration
config.xml and Hailstorm_Eav.xml
在 Hailstorm_Eav.xml
hailstorm_eav
至Hailstorm_Eav
并在config.xml中
<hailstorm_eav>
<version>0.1.0</version>
</hailstorm_eav>
应该是
<Hailstorm_Eav>
<version>0.1.0</version>
</Hailstorm_Eav>
和CodePool语法为Vishal Sharma Said