2013-02-03 9 views
2

我已经创建了一些在Magento Dataflow配置文件中使用的自定义操作。我想将复合参数值(数组或字典)传递给动作,类似于您可以传递给默认解析器操作的var类似的map。也就是说,我愿做这样的事情:如何在magento数据流xml配置文件中指定组合操作变量

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

变量原来在此情况下为空,尽管在与XML摆弄,并通过代码略读,似乎这种模式只<var name="map">工作。迷惑和令人失望。我也无法在任何文档中找到关于相关xml架构的丝毫暗示......

对此有何看法?谢谢!

回答

0

如果我的理解对不对,你问什么,你可能会覆盖系统/从管理转换/型材/ wizard.phtml并添加类似于现有的另一部分(我使用Community Edition版本1.7.0.2工作)但是表单元素应该有name =“gui_data [attribute_map] ... []”。

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

+0

这涉及到生成xml,事实上,我已经在使用“高级配置文件”而不是使用标准的“向导”进行操作。我的问题出现在xml被解析时。 –

0

你不能使用核心实现。

var元素只能包含简单的文本,除非该元素具有属性name="map",在这种情况下,轮廓解析器会为孩子寻找map元素,并用它们来填充PHP关联数组。

相关的代码是Mage_Dataflow_Model_Convert_Profile_Collection类的importProfileXml方法中:

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

扩展这个行为,你应该通过正常的Magento类重写方法重写此类具有自定义(子)类。

相关问题