This functionality is no longer available since version 2.3

Thelia imports

How to create an import ?

For an import, you have to create a class that extends Thelia\Importimport\Import\ImportHandler and implement the methods:

protected function getMandatoryColumns();
public function retrieveFromFormatterData(FormatterData $data);
public function getHandledTypes();

getMandatoryColumns must return an array with the name of mandatory columns. If you’re doing a couple import/import, it should have the same values as your mandatory import aliases.

retrieveFromFormatterData(FormatterData $data) is the method were you must put your import logic.

Thelia\Core\FileFormat\Formatting\FormatterData is an array wrapper but is not Iterable. A simple way to treat your data is to do:

public function retrieveFromFormatterData(FormatterData $data) {
    while(null !== $row = $data->popRow()) {

         // Your treatement here

getHandledTypes() must return an array with handled formatters types. Example :

return array(
    FormatType::TABLE, // For tabled formats (CSV, ODS, ...)
    FormatType::UNBOUNDED, // For unbounded formats (XML, json, ..)

Register an Import

To register an import in a module, you have to edit your Config/config.xml

Your have to add in “imports” a tag with that skeleton:

    <import id="" class="Your\ImportHandler" category_id="the.category_id">
        <import_descriptive locale="en_US">
            <title>Your import title </title>
             <!-- you may add an optionnal description -->
             <description> ... </description>
        <import_descriptive locale="fr_FR">
            <!-- Here's for another locale -->
        <!-- here's another import -->

Thelia import categories ids are:

  • thelia.import.products : imports conserning Products
  • thelia.import.modules : module specific imports

If you want to create a new category, you have to put in your Config/config.xml:

        <import_category id="">
            <title locale="en_US">A title</title>
            <title locale="fr_FR">Un titre</title>
        <import_category id="">
            <!-- here's another import category -->