Zum Hauptinhalt springen
Version: 2025.11

Dateiablage über ein Transfer-Adapter

Überblick

Das Bundle bietet die Möglichkeit, eigene Adapter zum Ablegen von Dateien außerhalb des Dateisystems zu konfigurieren. Damit können Dateien z.B. auf einem SFTP-Server abgelegt werden.

Dies ist vor allem relevant für die Ablage von Assets & JSON-Dateien für den Export.

Bereitgestellte Adapter

Hinweis

Sofern in der Konfiguration kein anderer Adapter konfiguriert ist, wird standardmäßig der NfsTransferAdapter genutzt!

Das Bundle stellt standardmäßig die folgenden Adapter zur Verfügung:

NfsTransferAdapter

Identifier: 'nfs'

Klasse: Twocream\ShopwareConnectorBundle\Service\TransferAdapter\NfsTransferAdapter

Beschreibung: Dies ist der Standard-Adapter, hiermit können Dateien auf dem lokalen Dateisystem abgelegt werden

SftpTransferAdapter

Identifier: 'sftp'

Klasse: Twocream\ShopwareConnectorBundle\Service\TransferAdapter\SftpTransferAdapter

Beschreibung: Dieser Adapter ermöglicht es, Daten auf einem SFTP-Server abzulegen

Die Verbindungsdaten zum SFTP-Server können über folgende Umgebungsvariablen definiert werden:

IdentifierBeschreibung
SW_CONNECTOR_TRANSFER_ADAPTER_SFTP_HOSTDer Hostname des SFTP-Servers
SW_CONNECTOR_TRANSFER_ADAPTER_SFTP_USERNAMEDer Nutzername zur Authentifizierung auf dem SFTP-Server
SW_CONNECTOR_TRANSFER_ADAPTER_SFTP_PASSWORDDas Passwort zur Authentifizierung auf dem SFTP-Server
SW_CONNECTOR_TRANSFER_ADAPTER_SFTP_PRIVATE_KEYDer Private-Key zur Authentifizierung auf dem SFTP-Server
SW_CONNECTOR_TRANSFER_ADAPTER_SFTP_PASSPHRASEDie Passphrase zur Authentifizierung mit dem Private-Key
SW_CONNECTOR_TRANSFER_ADAPTER_SFTP_PORTDer Port, der zur Verbindung genutzt werden soll (Standardmäßig: 22)

Eigenen Adapter erstellen

Hinweis

Adapter können durch ihren Identifier über folgende Collection-Klasse bezogen werden: Twocream\ShopwareConnectorBundle\Service\TransferAdapter\TransferAdapterCollector

Interface

Ein TransferAdapter muss das Interface Twocream\ShopwareConnectorBundle\Service\TransferAdapter\TransferAdapterInterface implementieren.

Methoden

Der Adapter muss folgende Methoden implementieren:

DefinitionArgumenteBeschreibung
public static function getIdentifier(): stringKeine ArgumenteRückgabe eines eindeutigen Identifiers für den Adapter (Dies ist der Wert, der in der Konfiguration hinterlegt wird)
public function exists(string $path): bool$path: Der zu prüfende PfadPrüft, ob der gegebene Pfad existiert
public function isDirectory(string $path): bool$path: Der zu prüfende PfadPrüft, ob es sich bei dem gegebenen Pfad um einen Ordner handelt
public function isFile(string $path): bool$path: Der zu prüfende PfadPrüft, ob es sich bei dem gegebenen Pfad um eine Datei handelt
public function isEmptyDirectory(string $path): bool$path: Der zu prüfende PfadPrüft, ob es sich bei dem gegebenen Pfad um einen leeren Ordner handelt
public function isAbsolutePath(string $path): bool$path: Der zu prüfende PfadPrüft, ob der gegebene Pfad absolut ist
public function read(string $path): ?string$path: Der Pfad der einzulesenden DateiLiest den Inhalt der gegebenen Datei aus und gibt diesen zurück
public function dumpFile(string $filename, string $content): bool$filename: Der Pfad zur Datei
$content: Der in die Datei zu schreibende inhalt
Schreibt den gegebenen Inhalt in die gegebene Datei
public function copy(string $source, string $target, bool $overwriteNewerFiles = false): bool$source: Der Pfad der zu kopierenden Datei
$target: Der Pfad, in dem die Datei kopiert werden soll $overwriteNewerFiles: Bestimmt, ob Dateien überschrieben werden sollen
Kopiert die gegebene Datei in den gegebenen Pfad
public function rename(string $origin, string $target, bool $overwrite = false): bool$origin: Der Pfad des zu umzubenennenden Ordners bzw. der zu umzubenennenden Datei
$target: Der neue Name $overwrite: Bestimmt, ob bestehende Dateien mit dem selben Namen überschrieben werden sollen
Benennt den gegebenen Ordner bzw. die gegebene Datei in den gegebenen Namen um
public function remove(string $path): bool$path: Der Pfad der zu löschenden Datei bzw. des zu löschenden OrdnersLöscht die gegebene Datei bzw. den gegebenen Ordner
public function mkdir(string $dir, int $mode = 0777): bool$dir: Der zu erstellende Ordner
$mode: Zugriffsrechte im oktalen Format
Erstellt den gegebenen Ordner
public function copyDirectory(string $sourceDir, string $destinationDir): bool$sourceDir: Der Pfad des zu kopierenden Ordners
$destinationDir: Der Pfad, in dem der Ordner kopiert werden soll
Kopiert den gegebenen Ordner in den gegebenen Pfad
public function findFiles(string $pattern, string $path, ?int $depth = null, bool $sortByModifiedTime = false, bool $ignoreDotFiles = false): array$pattern: Das Pattern zum Filtern von Dateinamen (RegEx oder Wildcards)
$path: Der Pfad zum zu durchsuchenden Ordner
$depth: Anzahl an Unterordner-Ebenen, die durchsucht werden sollen
$sortByModifiedTime: Bestimmt, ob nach Änderungszeitpunkt sortiert werden soll
$ignoreDotFiles: Bestimmt, ob Punktdateien (z.B. ., .., .env) ignoriert werden sollen
Sucht nach Dateien, die den gegebenen Bedingungen entsprechen (Siehe Argumente) und gibt diese als Array zurück
public function getFileModifiedTime(string $path): ?int$path: Der Pfad zur DateiGibt den Zeitpunkt der letzten Änderung der gegebenen Datei zurück

Registrierung

Neue Adapter sind in einer Service-Konfigurationsdatei zu registrieren. Hierbei ist der Service-Tag twocream.shopware_connector.transfer_adapter zwingend zu verwenden.

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

twocream.shopware_connector.transfer_adapter_example:
public: true
class: App\Service\TransferAdapter\ExampleTransferAdapter
tags: [ 'twocream.shopware_connector.transfer_adapter' ]