大家好,感谢您的阅读, 我使用magento和插件扩展
核心/存储
使用模型
插件/存储
模型。现在是时候扩展这个插件并更新模块功能了,所以我想覆盖
插件/商店
我的自定义模型模型
自定义/存储
所以告诉现在,所有视图应该如下结束:
核心/商店----被--->覆盖插件/存储----覆盖 --->定制/存储
但如果我致电Mage::getModel('Core/Store');
,我会获得
插件/存储
模型。这是因为magento正在阅读Core模块配置,它发现插件/存储覆盖了Core / Store模型,而没有检查插件/存储是否被任何其他模型(在我的情况下是Custom / Store)覆盖。
这意味着所有磁电编码中的所有Mage::getModel('Core/Store');
都不会返回
自定义/存储
实例,不会使用新开发的功能。 我说对了还是有办法使它有效?
PS:在我的情况下,甚至在通过自定义/存储覆盖插件/存储之后:
1-调用
Mage::app()
将返回一个具有_stores数组的对象 其中的所有商店都是插件/商店实例。
2- the call `Mage::getModel('Plugin/Store');` will return Custom/Store instance
3-电话
Mage::getModel('Core/Store');
将返回插件/存储 实例
答案 0 :(得分:1)
模块之间的依赖关系
1)扩展Magento核心模块时,需要配置模块之间的依赖关系
e.g。 app/etc/modules/MyNamespace_Customer.xml:
<MyNamespace_Customer>
<active>true</active>
<codePool>local</codePool>
<priority>1</priority>
<depends>
<Mage_Customer/>
</depends>
</MyNamespace_Customer>
2)在更新Magento核心模块实体的自定义模块中创建SQL
安装程序或数据安装程序时,需要创建依赖关系
e.g。 MyCustomModule
中的安装程序:
$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();
e.g。 dependency config
(销售报价实体已更改,需要添加与'销售'模块的依赖关系):
<MyNamespace_MyCustomModule>
<active>true</active>
<codePool>local</codePool>
<priority>1</priority>
<depends>
<Mage_Sales/>
</depends>
</MyNamespace_MyCustomModule>
3)来自Magento核心模块的Extending/Rewriting a file (model, helper, block, controller)
需要模块之间的依赖关系,否则最后更改的版本将是任意的,您将失去对重写的控制。
模块依赖关系对于优先排序SQL
语句很重要,在全新安装时,它们可以避免冲突,崩溃或错误的最终数据。
根据上述内容,您可以定义模块Plugin/Store
和Custom/Store
之间的依赖关系。