Я пробовал уже несколько дней, чтобы получить перезаписанную модель. Код кажется правильным, и переписывание, похоже, работает, но я не вижу журналы, которые я поставил там для целей отладки в system.log.
Я пробовал несколько учебников с одинаковым результатом.
Модуль WR_EPO активен и работает. Даже некоторые сценарии установки для добавления новых столбцов в мою базу данных sql работают нормально.
Вот мой код:
под локальным /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/Catalogue/Model/Product/Option/Type/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\ 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, после чего я записываю журнал в system.log и дополнительно в собственный файл журнала, но ни один из них не появляется, когда я обновляю страницу (предварительно очищенный кеш).
Как я могу исправить/отладить это? Почему перезаписанная модель не загружена вместо основной? Из того, что я прочитал, пользовательские перезаписи переопределяют основные модели.
Помощь очень ценится
Вам нужно изменить
<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