Zum Hauptinhalt springen

Neuen Adapter aufbauen

Aufbau Adapter

info

Neue Adapter müssen von der folgenden abstrakten Klasse erben: Twocream\ShopwareConnectorBundle\Transformer\Adapter\ArrayAdapter\ArrayAdapterAbstract

use Twocream\ShopwareConnectorBundle\Transformer\Adapter\ArrayAdapter\ArrayAdapterAbstract;

class ExampleAdapter extends ArrayAdapterAbstract
{
public static function getPackageName(): string
{
return 'example';
}

public function getTargetClassName(): string
{
return 'ExampleClassName';
}

protected function prepare($object): array
{
return [
'id' => $object->getId(),
'uuid' => md5($object->getId()),
'active-websites' => $object->getActiveWebsites(),
'texts' => $this->translationHelper()->mapTranslations(
$object->getLocalizedfields(),
['downloadTitle', 'downloadDescription'],
[
'downloadTitle' => 'title',
'downloadDescription' => 'description'
]
),
'custom-fields' => [
'position' => $object->getPosition(),
]
];
}
}

Erklärung verschiedener Methoden

NameBeschreibung
getPackageName(): stringEindeutiger Package-Name, z.B. "product"
getTargetClassName(): stringZugehöriger Objekt-Klassenname z.B. "Product"
prepare($object): arrayHier erfolgt die inhaltsbezogene Aufbereitung der Daten, die für den Export vorgesehen sind
Optional
initialize(): voidFührt vorbereitende Prozesse aus, z. B. Ermittlung von Produktpositionen
getDependentAdapters(): arrayDefiniert die Verarbeitungsreihenfolge der abhängigen Adapter, siehe "Abhängigkeiten zwischen Export-Adaptern"
getThumbnailMapping(): arrayDefiniert adapterrelevante Thumbnails, die bei der Bildübertragung berücksichtigt werden

Registrierung des Adapters

Neue Adapter sind in einer Service-Konfigurationsdatei zu registrieren. Hierbei ist der Service-Tag twocream.shopware_connector.adapter zwingend zu verwenden. Danach muss folgender Command per CLI twocream:shopware-connector:reload-permissions ausgeführt werden.

Best Practice

Zur strukturierten Konfiguration wird empfohlen, die Datei config/services/shopware_connector_adapter.yaml anzulegen. Diese ist anschließend über einen Import in der zentralen services.yaml einzubinden.

services:
_defaults:
autowire: true
autoconfigure: true
public: false

twocream.shopware_connector.adapter_example:
public: true
class: App\Components\Export\Adapters\ExampleAdapter
tags: [ 'twocream.shopware_connector.adapter' ]