Custom data handlers

It is possible to use a custom data handler instead of the standard \Cobweb\ExternalImport\Importer::handleArray() and \Cobweb\ExternalImport\Importer::handleXML(). The value declared as a custom data handler is a class name:

$GLOBALS['TCA']['some_table']['external']['general'][0]['data'] = Foo\MyExtension\DataHandler\CustomDataHandler::class;

The class itself must implement the \Cobweb\ExternalImport\DataHandlerInterface interface, which contains only the handleData() method. This method will receive two arguments:

  • an array containing the raw data returned by the connector service
  • a reference to the calling \Cobweb\ExternalImport\Importer object

The method is expected to return a simple PHP array, with indexed entries, like the standard methods (\Cobweb\ExternalImport\Importer::handleArray() and \Cobweb\ExternalImport\Importer::handleXML()).

Note

This was not tested by myself (the extension author). It was introduced to answer the particular need to parse large arrays using methods similar to XPath. This would have relied on a library which was not considered stable enough. Having custom data handlers makes it possible.