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()インポートごとに1回だけトリガーされるため、これはあなたが望む方法ではないと思います。コレクションデータにアクセスできるので、やりたい操作によっては合うかもしれません。
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 に答える