【问题标题】:Magento model class rewrite not workingMagento 模型类重写不起作用
【发布时间】:2015-05-14 22:00:57
【问题描述】:

我正在尝试扩展 Amazon Payments Magento 模块的 Service/Login.php 模型中的 Creativestyle_AmazonPayments_Model_Service_Login 类。

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

为了实现这一点,我在 config.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
        )

)

然后我想我会将我的 config.xml 中的 ... 行添加到第三方的 config.xml 中,以查看它是否将其添加到数组中然后...这也不起作用。

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

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

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

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

【问题讨论】:

    标签: php xml magento


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-10-18
      • 1970-01-01
      • 2012-03-22
      • 2012-05-30
      • 2015-12-08
      • 1970-01-01
      • 2012-12-22
      • 2011-06-26
      相关资源
      最近更新 更多