Импорт нестандартных данных посредством Magento DataFlow

Расширяем функциональность Magento DataFlow

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
#1 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

30.04.2010 14:46

1) Пишем свой адаптер (лучше всего подключить его как модуль Magento):

class Df_Dataflow_Model_Convert_Adapter_Sample
    extends Mage_Dataflow_Model_Convert_Adapter_Abstract
{
    protected $_storeModel;

    public function load() {
    }

    public function save() {     
    }

    public function getStoreModel()
    {
        if (is_null($this->_storeModel)) {
            $storeModel = Mage::getModel('df_dataflow/store');
            $this->_storeModel = Mage::objects()->save($storeModel);
        }
        return Mage::objects()->load($this->_storeModel);
    }

    public function saveRow(array $importData)
    {
      // Делаем обработку текущей строки входных данных

      return true;
    }
}




2) Если надлежит импортировать файл формата CSV, то настраиваем DataFlow так (для Excel аналогично):

<action type="dataflow/convert_adapter_io" method="load">
    <var name="type">file</var>
    <var name="path">var/import</var>
    <var name="filename"><![CDATA[stores.csv]]></var>
    <var name="format"><![CDATA[csv]]></var>
</action>



3) Задаём правила синтаксического разбора файла CSV (подключаем наш адаптер):

<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="decimal_separator"><![CDATA[.]]></var>
	<var name="adapter">[b]df_dataflow/convert_adapter_sample[/b]</var>
	 <var name="method">[b]saveRow[/b]</var>
</action>


#2 Felllini
  • Группа: Пользователь
  • Сообщений: 2
  • Регистрация: 08.02.2011

08.02.2011 11:40

Добрый день, объясните пожалуйста, какие данные должны быть в вот в этой модели getModel('df_dataflow/store').
Заранее спасибо.

#3 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

08.02.2011 14:03

В данном учебном контексте метод getModel('df_dataflow/store') и сам объект 'df_dataflow/store' бессмысленны.
В апреле прошлого года я хотел сделать учебный пример на базе работающего модуля, всё лишнее из него выкинул, но удалить 'df_dataflow/store' забыл.
Сейчас мне вообще весь этот пример выглядит странным.
Для обучения лучше скачайте какой-нибудь готовый открытый модуль.

#4 Felllini
  • Группа: Пользователь
  • Сообщений: 2
  • Регистрация: 08.02.2011

08.02.2011 19:52

спасибо за ответ, впринципи я уже разобрался и понял что мне это не поможет, так как мне нужно делать импорт с текстового файла, а DataFlow тут вроде как безсилен

#5 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

08.02.2011 20:13

Технология Magento DataFlow удобна для обмена данными с любыми внешними источниками.
Другое дело, что не для всех источников существуют профили и модули в стандартной комплектации Magento.

Поделиться темой: