Magento 1班级在Magento 2中重写,并带有依赖注入系统
题
戳四周 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的复杂层次结构来进行每模块重写。