Ablageverzeichnisse über ein Directory-Resolver bestimmen
Überblick
Das Bundle bietet die Möglichkeit, die Ablageverzeichnisse von Assets, JSON-Dateien und .done-Dateien über einen Service zu bestimmen.
Standard Resolver
Standardmäßig wird der DefaultDirectoryResolver genutzt, dieser gibt nur die Verzeichnisse aus der Konfiguration ohne weitere Unterornder weiter.
Eigenen Resolver erstellen
Resolver können durch ihren Identifier über folgende Collection-Klasse bezogen werden: Twocream\ShopwareConnectorBundle\Service\DirectoryResolver\DirectoryResolverCollector
Interface
Ein DirectoryResolver muss das Interface Twocream\ShopwareConnectorBundle\Service\DirectoryResolver\DirectoryResolverInterface implementieren.
Methoden
Der Resolver muss folgende Methoden implementieren:
| Definition | Argumente | Beschreibung |
|---|---|---|
public static function getIdentifier(): string | Keine Argumente | Rückgabe eines eindeutigen Identifiers für den Resolver (Dies ist der Wert, der in der Konfiguration hinterlegt wird) |
public function resolveJsonDirectory(?string $exportJob = null, ?array $targetConfiguration = null): string | $exportJob: Die Job-ID des aktuellen Exports$targetConfiguration: Die YAML-Konfiguration des Export-Targets als array | Gibt das Verzeichnis zurück, in dem die JSON-Dateien abgelegt werden sollen, dieser wird immer ab dem in der Konfiguration hinterlegten Export-Verzeichnis (export_directory) generiert |
public function resolveDoneDirectories(?array $targetConfiguration = null): array | $targetConfiguration: Die YAML-Konfiguration des Export-Targets als array | Gibt die Ablageverzeichnisse der .done-Dateien nach dem Export zurück |
public function resolveAssetDirectory(Asset $asset, ?string $exportJob = null, ?array $targetConfiguration = null): string | $asset: Das Asset$exportJob: Die Job-ID des aktuellen Exports $targetConfiguration: Die YAML-Konfiguration des Export-Targets als array | Gibt das Verzeichnis zurück, in dem Assets ebgelegt werden sollen, dieser wird immer ab dem in der Konfiguration hinterlegten Asset-Verzeichnis (asset_directory) generiert |
Registrierung
Neue Resolver sind in einer Service-Konfigurationsdatei zu registrieren. Hierbei ist der Service-Tag twocream.shopware_connector.directory_resolver zwingend zu verwenden.
services:
_defaults:
autowire: true
autoconfigure: true
public: false
twocream.shopware_connector.directory_resolver_example:
public: true
class: App\Service\DirectoryResolver\ExampleDirectoryResolver
tags: [ 'twocream.shopware_connector.directory_resolver' ]