Magento模型类重写不起作用


Magento model class rewrite not working

我正在尝试扩展在Amazon Payments Magento模块中的服务/登录.php模型中找到的Creativestyle_AmazonPayments_Model_Service_Login类。

我有自己的模块,我已经编写了该模块来修补该模块中的一些内容,但到目前为止,它们已经是块类重写和布局 XML 更改。

为了实现这一点,在我的配置中.xml我添加了:

    <models>
        <amazonpayments>
            <rewrite>
                <service_login>Glambert_AmazonPayments_Model_Service_Login</service_login>
            </rewrite>
        </amazonpayments>
    </models>

然后在app/code/local/Glambert/AmazonPayments/Model/Service/Login中.php我像这样扩展了类:

class Glambert_AmazonPayments_Model_Service_Login extends Creativestyle_AmazonPayments_Model_Service_Login {
 // code
}

据我所知,这足以使 LoginController .php在执行 Mage::getModel('amazonpayments/service_login') 时调用这个类;但它似乎不起作用。

为了调试,我在getGroupedClassName方法中添加了一些登录到app/code/core/Mage/Core/Model/Config.php以查看当我们获得此模型并且重写没有显示时$this->_xml->global->{$groupType.'s'}->{$group}返回的内容,只是这样:

Mage_Core_Model_Config_Element Object
(
    [class] => Creativestyle_AmazonPayments_Model
    [rewrite] => Mage_Core_Model_Config_Element Object
        (
            [checkout] => ThirdParty_Module_Model_AmazonPayments_Checkout
        )
)

然后我想我会添加...行从我的配置.xml进入第三方的配置.xml看看它是否将其添加到数组中,然后......那也没用。

作为测试人员,我将这一行添加到getGroupedClassName方法中:

if($class == 'service_login') $config->rewrite->$class = 'Glambert_AmazonPayments_Model_Service_Login';

这确实执行了我的代码。 这让我觉得配置.xml文件有问题?

更新:看起来整个模块Glambert_AmazonPayments不起作用。 这是在开发分支上测试从 1.13.1 升级到 1.14,该模块在 1.13.1 上运行良好,但在 1.14 上则不然,除了重写模型的这一更改之外,没有任何变化

我的解决方法是在配置 -> 高级 -> 高级中禁用该模块,然后重新启用它,然后它就可以工作了。 我不知道为什么这有效,但它确实有效。