Переписывание модели Magento 1.9.1 не выполнено

1

Я пробовал уже несколько дней, чтобы получить перезаписанную модель. Код кажется правильным, и переписывание, похоже, работает, но я не вижу журналы, которые я поставил там для целей отладки в 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 и дополнительно в собственный файл журнала, но ни один из них не появляется, когда я обновляю страницу (предварительно очищенный кеш).

Как я могу исправить/отладить это? Почему перезаписанная модель не загружена вместо основной? Из того, что я прочитал, пользовательские перезаписи переопределяют основные модели.

Помощь очень ценится

Теги:
debugging
model
magento
rewrite

1 ответ

1
Лучший ответ

Вам нужно изменить

<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
  • 0
    это сработало. Большое спасибо, сэкономил мне кучу времени! Кроме того, мне пришлось перекомпилировать из административной панели бэкэнда (выход и вход также могут помочь) Думаю, теперь я понимаю, как это сделать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню