Markus Michalski FAQ

Marketplace Redirect: Erweiterbarkeit

Marketplace Redirect erweitern: weiteren Marktplatz per URL-Builder anbinden, austauschbare Services und Rückwärtskompatibilität.

English Version

Zurück zur Übersicht

Marketplace Redirect: Erweiterbarkeit

Diese Dokumentation bezieht sich immer auf die aktuellste veröffentlichte Version.

Weiteren Marktplatz anbinden

Die URL wird aus der Referenz von je einem Service gebaut, der MarketplaceUrlBuilderInterface implementiert. Der Resolver sammelt alle Services mit dem Tag mmd_sylius_marketplace_redirect.url_builder ein und fragt der Reihe nach, wer den Typ unterstützt.

Methode Aufgabe
supports(MarketplaceType $type) Ob dieser Builder den Typ übernimmt
isValidReference(string $reference) Ob die Referenz für diesen Marktplatz gültig ist
build(string $reference, ?string $region = null) Baut die URL, wirft \InvalidArgumentException bei einer ungültigen Referenz
services:
    App\Marketplace\MyMarketplaceUrlBuilder:
        tags: ['mmd_sylius_marketplace_redirect.url_builder']

Der Marktplatz-Typ ist ein Enum des Plugins (MarketplaceType mit den Fällen amazon und shopware_store) und lässt sich nicht per Konfiguration erweitern. Ein dritter Marktplatz braucht einen neuen Enum-Fall, also eine Änderung am Plugin selbst, und einen passenden Button im Shop-Template.

Austauschbare Services

Service oder Interface Zweck
MarketplaceRedirectProviderInterface Liefert den Redirect zu einem Produkt. Per Service-Alias austauschbar
mmd_sylius_marketplace_redirect.channel_settings_repository Öffentlicher Service für die Channel-Einstellungen, damit Tests und der Host darauf zugreifen können
sylius_twig_hooks.renderer.hookable Wird vom Plugin dekoriert und kann vom Host weiter dekoriert werden
ChannelSettingsRepositoryInterface, ProductMarketplaceLinkRepositoryInterface Repositories für Channel-Einstellungen und Links, per Autowiring-Alias erreichbar
mmd_sylius_marketplace_redirect_plugin.marketplace_redirect_settings, mmd_sylius_marketplace_redirect_plugin.product_marketplace_link Die beiden als Sylius-Resource registrierten Entities
mmd_sylius_marketplace_redirect_plugin_admin_marketplace_redirect_settings Grid-ID der Einstellungsliste, über sylius_grid erweiterbar

Rückwärtskompatibilität

Die Klasse AdminMenuListener ist als @internal markiert: Konstruktoren und Interna können sich in einem Minor-Release ändern. Verlass dich beim Erweitern auf die oben genannten Interfaces und Tags.