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
Name | Beschreibung |
---|---|
getPackageName(): string | Eindeutiger Package-Name, z.B. "product" |
getTargetClassName(): string | Zugehöriger Objekt-Klassenname z.B. "Product" |
prepare($object): array | Hier erfolgt die inhaltsbezogene Aufbereitung der Daten, die für den Export vorgesehen sind |
Optional | |
initialize(): void | Führt vorbereitende Prozesse aus, z. B. Ermittlung von Produktpositionen |
getDependentAdapters(): array | Definiert die Verarbeitungsreihenfolge der abhängigen Adapter, siehe "Abhängigkeiten zwischen Export-Adaptern" |
getThumbnailMapping(): array | Definiert 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' ]