0

背景: Magento 1.7.0.0 版本。我必须使用 magento 数据流高级配置文件导入 csv 数据。我制作了一个实现 Mage_Dataflow_Model_Convert_Adapter_Abstract 的适配器。我已经实现了 saveRow() 方法来处理每一行,好的。

下一步:我想在处理任何行之前运行一些代码:类似于 save() 或 beforeSave() 方法......我该怎么做

我想我必须从 Mage_Dataflow_Model_Convert_Adapter_Abstract 实现 save() 方法,并在我的导入配置文件的 Actions XML 部分添加一些内容:

<!-- adapter: loading data from local csv file-->
<action type="dataflow/convert_adapter_io" method="load">
    <var name="type">file</var>
    <var name="path">var/import</var>
    <var name="filename"><![CDATA[blabla.csv]]></var>
    <var name="format"><![CDATA[csv]]></var>
</action>

<!-- parsing: transform into database entities -->
<action type="dataflow/convert_parser_csv" method="parse">
    <var name="delimiter"><![CDATA[,]]></var>
    <var name="enclose"><![CDATA[']]></var>
    <var name="fieldnames">true</var>
    <var name="store"><![CDATA[0]]></var>
    <var name="number_of_records">1</var>
    <var name="adapter">mymodule/convert_adapter_blabla</var>
    <var name="method">saveRow</var>
</action>

欢迎任何建议,谢谢!:)

4

1 回答 1

1

save()方法每次导入只会触发一次,所以我认为这不是你想要的方式。虽然它可以访问收集数据,但根据您想要执行的操作,它可能适合。
由于您已经实现了 saveRow() 方法,您不能在执行其他任何操作之前在其中包含对某个(私有)方法的调用吗?

public function saveRow()
{
    $this->_somePrivateMethod();
    ...
    /** the rest of saveRow() method **/
    ...
}

private function _somePrivateMethod()
{
    /** the code you want to execute before every row is saved **/
}
于 2012-06-05T11:20:12.247 回答