首页>Magento>source

我试图用自己的"信息"功能重写模型sales_order_credit_memo_api。 我创建了所有文件但是当我访问API调用"order_creditmemo.info"时,它使用了基础Mage模型,而不是使用我重写中定义的类。

我已经成功改写了其他模型,但是我无法使用这个模型。 Does anyone know what I'm doing wrong?

如果我使用magerun.phar工具并运行此命令,则显示以下所示的所有编码 magerun.phar dev:class:lookup model sales/order_creditmemo_api   它导致了 Model sales/order_creditmemo_api resolves to Kane_MultiDiscountAPI_Model_Order_Creditmemo_Api   这应该意味着一切正常。

包含我正在尝试重写的类的文件是:app / code / Mage / Sales / Model / Order / Creditmemo / Api.php

FILES IN MY EXTENSION:

应用程序的/ etc /模块/ Kane_MultiDiscountAPI.xml

<?xml version="1.0" encoding="UTF-8"?>
 <config>
    <modules>
        <Kane_MultiDiscountAPI>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Sales />
            </depends>
        </Kane_MultiDiscountAPI>
    </modules>
</config>

应用程序/代码/本地/凯恩/ MultiDiscountAPI的/ etc / config.xml中

<?xml version="1.0"?>
<config>
    <modules>
        <Kane_MultiDiscountAPI>
            <version>0.1.0</version>
        </Kane_MultiDiscountAPI>
    </modules>
    <global>
        <models>
            <sales>
                <rewrite>
                    <order_api>Kane_MultiDiscountAPI_Model_Order_Api</order_api>
                    <order_creditmemo_api>Kane_MultiDiscountAPI_Model_Order_Creditmemo_Api</order_creditmemo_api>
                </rewrite>
            </sales>
        </models>
    </global>
</config>

应用程序/代码/本地/凯恩/ MultiDiscountAPI /型号/订购/贷记通知单/ Api.php

class Kane_MultiDiscountAPI_Model_Order_Creditmemo_Api extends Mage_Sales_Model_Order_Creditmemo_Api
{
    public function info($creditmemoIncrementId)
    {
        $result = parent::info($creditmemoIncrementId);
        // Extended logic
        return $result;
    }
}
最新回答
  • 2019-12-5
    1 #

    我认为你的config.xml完全正常。信用备忘录的覆盖是错误的,但前两次重写是正确的。需要检查模型类代码。

    我的skye是kinex.sourav. &安培; 我是magento开发者.和我一起skype

  • 2019-12-5
    2 #

    我能重现这个问题的唯一方法就是你的模块注册文件有问题( app/etc/modules/Kane_MultiShippingAPI.xml )。

    考虑以下因素:

    # File: app/etc/modules/Kane_MultiShippingAPI.xml
    <?xml version="1.0"?>
    <config>
        <modules>
            <Kane_MultiDiscountAPI>
                <active>true</active>
                <codePool>local</codePool>
            </Kane_MultiDiscountAPI>
        </modules>
    </config>
    

    如果我将其与您提供的其余代码一起使用并使用Magerun测试类查找,我会得到您的模型:

    $ magerun.phar dev:class:lookup model sales/order_api
    Model sales/order_api resolves to Kane_MultiDiscountAPI_Model_Order_Api
    

    然而,如果你使用 codepool   而不是 codePool ,或者你的模块中的任何其他东西都被打破了,然后它会解析回到 Mage_Sales_Model_Order_Api

    正如KESHAV_SOURAV已经提到的那样,这行你的 config.xml   没有必要(假设它是测试的宿醉) - 没有 Mage_Sales_Sales   类路径:

    <sales_order_creditmemo_api>Kane_MultiDiscountAPI_Model_Order_Creditmemo_Api</sales_order_creditmemo_api>
    

    此外 - 必须说明的是:确保您已清除缓存(或在测试时将其禁用)。

  • 仅将magento 19中的产品导入Magento 218
  • magento2:Magento 2 csv导入:我是否需要为可配置产品指定价格?