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.
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.
- 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
- Bundle in
config/bundles.phpregistrieren:
Mmd\SyliusVariantPriceSurchargePlugin\MmdSyliusVariantPriceSurchargePlugin::class => ['all' => true],
- 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.yamlenthält keine Routen, du musst sie nicht importieren.
- Setup-Befehl ausführen:
bin/console mmd:variant-price-surcharge:setup
- 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:
- Er prüft, ob die Admin-Route
mmd_variant_price_surcharge_admin_settingsvorhanden ist. Fehlt sie, gibt er den Snippet aus Schritt 3 aus und läuft weiter. Er schreibt nie inconfig/. - Er bricht ab, wenn die Migrationen des Plugins Doctrine nicht bekannt sind, etwa weil das Bundle nicht aktiv ist.
- Gibt es keine offene Migration des Plugins, meldet er "Migrations are already up to date." und tut nichts. Du kannst ihn deshalb nach jedem
composer updategefahrlos ausführen. - Gibt es offene Migrationen des Plugins, aber auch noch offene Sylius-Migrationen, bricht er ab und verweist auf
bin/console doctrine:migrations:migrate. Führe diesen Befehl dann zuerst aus und starte den Setup-Befehl danach erneut. - Sonst führt er die offenen Migrationen des Plugins aus und meldet die Anzahl. Dabei fragt Doctrine um Bestätigung. In Skripten übergibst du
--no-interaction.
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
- Öffne im Admin ein Produkt und bearbeite eine Variante. Dort steht der neue Bereich Preisaufschlag.
- 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_channelzu. 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:
- 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.
- 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'
- Routen-Import und Bundle-Eintrag entfernen.
- 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.