Php magento中的模块覆盖问题

Php magento中的模块覆盖问题,php,magento,magento-1.7,overriding,magento-1.8,Php,Magento,Magento 1.7,Overriding,Magento 1.8,大家好,谢谢阅读, 我正在使用magento和扩展插件 核心/存储 使用模型 插件/存储 模型。现在是扩展这个插件和更新模块函数的时候了,所以我想覆盖它 插件/存储 模型由我的自定义模型 海关/商店 因此,现在告诉我们,总体视图应如下所示结束: 核心/存储----被---->Plugin/Store----覆盖 --->海关/商店 但是如果我调用Mage::getModel('Core/Store'),我得到 插件/存储 模型。这是因为magento正在读取核心模块配置,它发现核心/存储模型被P

大家好,谢谢阅读, 我正在使用magento和扩展插件

核心/存储

使用模型

插件/存储

模型。现在是扩展这个插件和更新模块函数的时候了,所以我想覆盖它

插件/存储

模型由我的自定义模型

海关/商店

因此,现在告诉我们,总体视图应如下所示结束:

核心/存储----被---->Plugin/Store----覆盖 --->海关/商店

但是如果我调用
Mage::getModel('Core/Store'),我得到

插件/存储

模型。这是因为magento正在读取核心模块配置,它发现核心/存储模型被Plugin/Store覆盖,而没有检查Plugin/Store是否被任何其他模型覆盖(在我的例子中是Custom/Store)。 这意味着所有的
Mage::getModel('Core/Store')在所有磁电机中,代码不会返回

海关/商店

实例,将不使用新开发的功能。 我说的是对的还是有办法让它发挥作用

PS:在我的情况下,即使在通过自定义/存储覆盖插件/存储之后:

1-调用
Mage::app()
将返回一个对象has\u stores数组和 其中的所有商店都是插件/商店实例

3-调用Mage::getModel('Core/Store')将返回插件/存储 实例


模块之间的依赖关系

1) 扩展Magento核心模块时,需要配置模块之间的依赖关系

e、 g.
app/etc/modules/MyNamespace\u Customer.xml:

<MyNamespace_Customer>
    <active>true</active>
    <codePool>local</codePool>
    <priority>1</priority>
    <depends>
        <Mage_Customer/>
    </depends>
</MyNamespace_Customer>
e、 g.
依赖项配置
(销售报价实体已更改,需要添加与“销售”模块的依赖项):


真的
地方的
1.
3)
从Magento core模块扩展/重写文件(模型、助手、块、控制器)
需要模块之间的依赖关系,否则最后更改的版本将是任意的,您将无法控制重写

模块依赖关系对于排序
SQL
语句的优先级很重要,在新安装时,它们将避免冲突、崩溃或错误的最终数据


基于以上内容,您可以定义模块之间的依赖关系
Plugin/Store
Custom/Store

谢谢您提供的信息性回答,但我添加了新自定义模块和插件模块之间的依赖关系(例如,自定义模块配置中的
)它应该是这样的
Plugin/Store
依赖于
Core/Store
Custom/Store
依赖于
Plugin/Store
这正是现在的情况,但仍然和我在问题中解释的一样。在安装模块时,你必须确保它们彼此兼容。有时,您必须根据需要进行修改。
<MyNamespace_Customer>
    <active>true</active>
    <codePool>local</codePool>
    <priority>1</priority>
    <depends>
        <Mage_Customer/>
    </depends>
</MyNamespace_Customer>
$installer = $this;
$installer->startSetup();

$sqlQuote = 'ALTER TABLE ' . $this->getTable('sales_flat_quote') .
            ' ADD `is_urgent` TINYINT UNSIGNED NOT NULL DEFAULT 0';

$installer->run($sqlOrder);
$installer->run($sqlQuote);

$installer->endSetup();
<MyNamespace_MyCustomModule>
    <active>true</active>
    <codePool>local</codePool>
    <priority>1</priority>
    <depends>
        <Mage_Sales/>
    </depends>
</MyNamespace_MyCustomModule>