Markus Michalski FAQ

Varianten-Preisaufschlag: Installation und Betrieb

Varianten-Preisaufschlag für Sylius installieren: Composer-Paket, Bundle und Admin-Routen einbinden, Setup-Befehl ausführen, Update und Deinstallation in der richtigen Reihenfolge.

English Version

Zurück zur Übersicht

Varianten-Preisaufschlag: Installation und Betrieb

Voraussetzungen

Anforderung Version Hinweise
Sylius ^2.2 Paket sylius/sylius, getestet mit 2.2 und 2.3
PHP ^8.3
Datenbank MySQL oder MariaDB Die mitgelieferten Migrationen sind in MySQL-Syntax geschrieben

Das Plugin braucht keine Erweiterung der Sylius-Klasse ProductVariant. Es legt drei eigene Tabellen an und arbeitet über Decorator der Preisrechner.

Installation

Das Repository ist privat und wird über Packeton bereitgestellt (https://packeton.markus-michalski.net). Die Zugangsdaten bekommst du nach dem Lizenzkauf bzw. der Freigabe.

  1. Packeton als Composer-Repository eintragen und das Paket installieren:
{ "repositories": [{ "type": "composer", "url": "https://packeton.markus-michalski.net" }] }
composer require mmd/sylius-variant-price-surcharge-plugin
  1. Bundle in config/bundles.php registrieren:
Mmd\SyliusVariantPriceSurchargePlugin\MmdSyliusVariantPriceSurchargePlugin::class => ['all' => true],
  1. Admin-Routen importieren, zum Beispiel in config/routes/mmd_sylius_variant_price_surcharge.yaml:
mmd_sylius_variant_price_surcharge_admin:
    resource: "@MmdSyliusVariantPriceSurchargePlugin/config/routes/admin.yaml"

Die Routen werden zwingend gebraucht: Der Menüeintrag im Admin verweist auf die Einstellungsseite. Die Datei config/routes/shop.yaml enthält keine Routen, du musst sie nicht importieren.

  1. Setup-Befehl ausführen:
bin/console mmd:variant-price-surcharge:setup
  1. Cache leeren:
bin/console cache:clear

Die Twig-Hooks für das Variantenformular, die Einstellungsseite und das Grid der Übersicht registriert das Plugin automatisch. Du musst keine Assets installieren oder bauen.

Der Setup-Befehl

mmd:variant-price-surcharge:setup führt ausschließlich die offenen Migrationen dieses Plugins aus, nichts von der App oder von anderen Plugins. Er macht der Reihe nach Folgendes:

Der Befehl hat keine eigenen Optionen. Alternativ funktioniert auch bin/console doctrine:migrations:migrate, das führt allerdings alle offenen Migrationen der gesamten Anwendung aus.

Was die Migrationen anlegen

Tabelle Inhalt
mmd_product_variant_price_surcharge Eine Zeile pro konfigurierter Variante: Basisvariante ja/nein, Aufschlag aktiv ja/nein, Prozentsatz, fester Aufschlag. Fremdschlüssel auf sylius_product_variant mit ON DELETE CASCADE
mmd_variant_price_surcharge_settings Eine Zeile mit dem globalen Schalter
mmd_product_variant_price_surcharge_channel Überschreibungen pro Channel: eine Zeile je Aufschlag und Channel-Code. Fremdschlüssel auf mmd_product_variant_price_surcharge mit ON DELETE CASCADE

Nach der Installation

  1. Öffne im Admin ein Produkt und bearbeite eine Variante. Dort steht der neue Bereich Preisaufschlag.
  2. Markiere eine Variante als Basisvariante und aktiviere bei einer anderen Variante Aufschlag anwenden.

Details stehen unter Konfiguration.

Update

composer update mmd/sylius-variant-price-surcharge-plugin
bin/console mmd:variant-price-surcharge:setup
bin/console cache:clear

Führe den Setup-Befehl nach einem Update sofort aus. Der Preisrechner und das Variantenformular greifen auf die Tabelle mmd_product_variant_price_surcharge_channel zu. Fehlt sie, weil die Migration noch nicht lief, liefert jede Variante mit Aufschlag still ihren eigenen Preis, und die Bearbeitungsseite einer Variante im Admin meldet einen Fehler. Weitere Schritte sind nicht nötig: Ein Shop ohne Überschreibungen pro Channel verhält sich danach wie vorher.

Deinstallation

Reihenfolge einhalten, solange das Bundle noch registriert ist:

  1. Prüfe, welche Varianten einen Aufschlag tragen (Übersicht im Admin). Nach der Deinstallation gilt für jede Variante wieder der Preis, der in ihren eigenen Channel-Preisen gespeichert ist.
  2. Migrationen zurückrollen, neueste zuerst:
bin/console doctrine:migrations:execute --down 'Mmd\SyliusVariantPriceSurchargePlugin\Migrations\Version20261015135354'
bin/console doctrine:migrations:execute --down 'Mmd\SyliusVariantPriceSurchargePlugin\Migrations\Version20260905124014'
bin/console doctrine:migrations:execute --down 'Mmd\SyliusVariantPriceSurchargePlugin\Migrations\Version20260905080038'
  1. Routen-Import und Bundle-Eintrag entfernen.
  2. Paket entfernen:
composer remove mmd/sylius-variant-price-surcharge-plugin

Beim Zurückrollen werden alle drei Tabellen gelöscht und damit alle konfigurierten Aufschläge samt Überschreibungen pro Channel.