Magento 1.9.1模型重写未执行

时间:2015-10-12 11:23:10

标签: php magento debugging model rewrite

我现在已经尝试了几天才能让重写模型正常运行。 代码似乎是正确的,重写似乎有效,但我无法看到日志,我已经将它放在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并另外进入自定义日志文件,但是当我刷新页面时(预先清除了缓存),它们都没有出现。

如何修复/调试此问题?为什么重写的模型没有加载而不是核心模型?从我读过的自定义重写覆盖核心模型。

非常感谢帮助

1 个答案:

答案 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