Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Magento模型类重写不起作用_Php_Xml_Magento - Fatal编程技术网

Php Magento模型类重写不起作用

Php Magento模型类重写不起作用,php,xml,magento,Php,Xml,Magento,我试图扩展Amazon Payments Magento模块中Service/Login.php模型中的Creativestyle\u AmazonPayments\u Model\u Service\u Login类 我有自己的模块,我已经编写了该模块来修补该模块中的一些东西,但到目前为止,它们已经被块类重写和布局XML更改 为了实现这一点,我在我的config.xml中添加了: <models> <amazonpayments>

我试图扩展Amazon Payments Magento模块中Service/Login.php模型中的Creativestyle\u AmazonPayments\u Model\u Service\u Login类

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

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

    <models>
        <amazonpayments>
            <rewrite>
                <service_login>Glambert_AmazonPayments_Model_Service_Login</service_login>
            </rewrite>
        </amazonpayments>
    </models>
据我所知,这足以让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
        )

)
然后我想我会添加。。。将my config.xml中的行添加到第三方的config.xml中,查看是否将其添加到数组中,然后。。。那也没用

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

if($class == 'service_login') $config->rewrite->$class = 'Glambert_AmazonPayments_Model_Service_Login';
这确实执行了我的代码。这让我觉得config.xml文件有问题吗


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

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

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