2

我创建了一些自定义操作以在 Magento Dataflow 配置文件中使用。我想将复合参数值(数组或字典)传递给操作,类似于map您可以传递给默认解析器操作的 var。即,我想做这样的事情:

<var name="attribute_map">
    <map name="sColore"><![CDATA[colore]]></map>
    <map name="sMarca"><![CDATA[marca]]></map>
    <map name="sFornitore"><![CDATA[fornitore]]></map>
</var>

在这种情况下,变量结果为 null,尽管在摆弄 xml 并浏览代码时,似乎这种模式只适用于<var name="map">. 令人费解和失望。我也无法在任何文档中找到有关相关 xml 架构的最轻微提示......

对此有任何想法吗?谢谢!

(我正在使用社区版 1.7.0.2 版)

4

2 回答 2

0

你不能,使用核心实现。

var元素只能包含简单的文本,除非元素具有 属性,name="map"在这种情况下,配置文件解析器将搜索子map元素并使用它们来填充 php 关联数组。

相关代码在类的importProfileXml方法里面Mage_Dataflow_Model_Convert_Profile_Collection

if ($varNode['name'] == 'map') {
   $mapData = array();
   foreach ($varNode->map as $mapNode) {
      $mapData[(string)$mapNode['name']] = (string)$mapNode;
   }
   $container->setVar((string)$varNode['name'], $mapData);
}

要扩展此行为,您应该通过通常的 magento 类覆盖方法使用自定义(子)类覆盖此类。

于 2013-05-14T17:05:28.633 回答
0

如果我理解你的要求,你可以从管理员覆盖 system/convert/profile/wizard.phtml 并添加另一个类似于现有地图的部分,但表单元素应该有 name="gui_data[attribute_map]...[]" .

然后您应该覆盖 Mage_Dataflow_Model_Profile 中的 _parseGuiData 方法以形成正确的配置文件操作 xml。希望有帮助。

于 2013-04-04T12:29:42.033 回答