我现在已经尝试了几天才能让重写模型正常运行。 代码似乎是正确的,重写似乎有效,但我无法看到日志,我已经将它放在system.log中用于调试目的。
我尝试了几个教程,结果完全相同。
模块WR_EPO处于活动状态并正在运行。甚至一些用于在我的sql数据库中添加新列的安装程序脚本也能正常工作。
这是我的代码:
local / WR / EPO / etc / config.xml:
<?xml version="1.0"?>
<config>
<modules>
<WR_EPO>
<version>1.0.0.1</version>
</WR_EPO>
</modules>
<global>
<models>
<wr_epo>
<class>WR_EPO_Model</class>
<resourceModel>wr_epo_resource</resourceModel>
</wr_epo>
<wr_epo_resource>
<class>WR_EPO_Model_Resource</class>
<entities>
<field>
<table>wr_epo_field</table>
</field>
</entities>
</wr_epo_resource>
<catalog>
<rewrite>
<product_option_type>WR_Catalog_Model_Product_Option_Type</product_option_type>
</rewrite>
</catalog>
<wishlist>
<rewrite>
<item>WR_Wishlist_Model_Item</item>
</rewrite>
</wishlist>
</models>
<resources>
<wr_epo_setup>
<setup>
<module>WR_EPO</module>
</setup>
</wr_epo_setup>
</resources>
<blocks>
<adminhtml>
<rewrite>
<tag_edit>WR_Adminhtml_Block_Catalog_Product_Edit_Tab_Options</tag_edit>
</rewrite>
</adminhtml>
</blocks>
</global>
</config>
本地/ WR / EPO /目录/模型/产品/选项/类型/ text.php 下的重写模型:
<?php
class WR_Catalog_Model_Product_Option_Type_Text extends Mage_Catalog_Model_Product_Option_Type_Text
{
/**
* Validate user input for option
*
* @throws Mage_Core_Exception
* @param array $values All product option values, i.e. array (option_id => mixed, option_id => mixed...)
* @return Mage_Catalog_Model_Product_Option_Type_Default
*/
public function validateUserValue($values)
{
parent::validateUserValue($values);
$option = $this->getOption();
$value = trim($this->getUserValue());
// Check requires option to have some value
if (strlen($value) == 0 && $option->getIsRequire() && !$this->getSkipCheckRequiredOption()) {
$this->setIsValid(false);
Mage::throwException(Mage::helper('catalog')->__('Please specify the product\'s required option(s).'));
}
// Check maximal length limit
$maxCharacters = $option->getMaxCharacters();
$minValue = $option->getMinValue();
$maxValue = $option->getMaxValue();
if ($maxCharacters > 0 && Mage::helper('core/string')->strlen($value) > $maxCharacters) {
Mage::log(
"success maxChar in text.php",
null,
'WR_product-updates.log'
);
Mage::Log("success maxChar in text.php");
if (isset($minValue) && isset($maxValue) && ($value < $minValue || $value > $maxValue)){
$this->setIsValid(false);
Mage::throwException(Mage::helper('catalog')->__('The value is not in range!!!'));
}
else{
$this->setIsValid(false);
Mage::throwException(Mage::helper('catalog')->__('The text is too long'));
}
}
$this->setUserValue($value);
return $this;
}
}
这里我添加了2个变量$ minValue和$ maxValue und之后我登录到system.log并另外进入自定义日志文件,但是当我刷新页面时(预先清除了缓存),它们都没有出现。
如何修复/调试此问题?为什么重写的模型没有加载而不是核心模型?从我读过的自定义重写覆盖核心模型。
非常感谢帮助
答案 0 :(得分:2)
您需要更改
<product_option_type>WR_Catalog_Model_Product_Option_Type</product_option_type>
到
<product_option_type_text>WR_EPO_Model_Product_Option_Type_Text</product_option_type_text>
将文件放入WR / EPO / Model / Product / Option / Type / Text.php 并从
更改类名class WR_Catalog_Model_Product_Option_Type_Text
到
class WR_EPO_Model_Product_Option_Type_Text