戳四周 Magento 2的核心代码, ,看起来旧类改写系统已被撕掉,并用新的依赖注入系统替换。

不幸的是,有 没有文档 对于这个新系统。

是否有人有一个模块配置示例,可以让用户在Magento 2中“重写”类 Mage_Catalog_Model_Product 有一个新课 Packagename_Modulename_Model_Product, ,使用新的依赖注入系统?

有帮助吗?

解决方案

DI配置已移至DI.xml文件,并修改了格式。现在的偏好看起来像这样(di.xml):

<config>
    <preference for="{Interface_Or_Class_Name}" type="{Preferred_Class_Name}" />
</config>

其他提示

从内而外工作,我能够重写以下内容

<global>    
    <di>    
        <preferences>
            <Mage_Catalog_Model_Product>Packagename_Modulename_Model_Product</Mage_Catalog_Model_Product>
        </preferences> 
    </di>
</global>

但是,依赖项注射实现中有更多的系统代码,因此尚不清楚以上版本在Magento 2的最终版本中是否有效。

您是正确的,完全消除了类重写并用DI替换。以下注释来自有关 应用框架更改:

Magento 1.x - node:/global // {sub-path,对应于工厂名称 +“重写”字样}

<global>
...
    <models>
        <core>
            <rewrite>
                <url>My_Module_Model_Url</url>
            </rewrite>
        </core>
    </models>
...
</global>

Magento 2.x - 节点:/global/di/别名

<global>
...
    <di>
        <aliases>
            <Mage_Core_Model_Url>My_Module_Model_Url</Mage_Core_Model_Url>
        </aliases>
    </di>
...
</global>

我尚未尝试在Magento 2.0中运行的模块中使用此功能,但是您似乎基本上定义了类名称的别名,而不是使用XML的复杂层次结构来进行每模块重写。

许可以下: CC-BY-SA归因
scroll top