Product Custom Inputs: Installation
Installation des Sylius-Plugins Product Custom Inputs über Composer und Packeton: Bundle, Routen, Setup-Command, Update und Deinstallation in der richtigen Reihenfolge.
Product Custom Inputs: Installation
Diese Dokumentation bezieht sich immer auf die aktuellste veröffentlichte Version.
Voraussetzungen
Eine laufende Sylius-2.2-Anwendung (oder neuer) mit PHP 8.3 und Symfony 7.4. Das Plugin bringt eigene Tabellen mit, die Datenbank muss also schreibbar sein.
Installation
Composer (Packeton)
Private Repositories werden über Packeton verwaltet (
https://packeton.markus-michalski.net). Zugangsdaten gibt es nach Lizenzkauf oder Freigabe.
Repository in der composer.json der Shop-Anwendung eintragen:
{ "repositories": [{ "type": "composer", "url": "https://packeton.markus-michalski.net" }] }
composer require mmd/sylius-product-custom-inputs-plugin
Danach in dieser Reihenfolge:
-
Bundle in
config/bundles.phpregistrieren:Mmd\SyliusProductCustomInputsPlugin\MmdSyliusProductCustomInputsPlugin::class => ['all' => true], -
Admin-Routen in
config/routes.yamlimportieren:mmd_sylius_product_custom_inputs_plugin_admin: resource: "@MmdSyliusProductCustomInputsPlugin/config/routes/admin.yaml" -
Setup-Command ausführen:
php bin/console mmd:product-custom-inputs:setup
Der Routen-Import ist Pflicht. Symfony entdeckt Routen eines Bundles nicht automatisch. Ohne diesen Schritt fehlt der Menüpunkt "Produkt-Zusatzfelder" im Admin, und die Felder lassen sich nicht verwalten.
Admin-Grid und das Auswahlfeld im Produktformular registriert das Plugin selbst, dafür ist keine Konfiguration nötig. Das Plugin hat keine eigenen Config-Keys unter config/packages/. Mitgeliefert sind die Übersetzungen de_DE und en_US.
Setup-Command
mmd:product-custom-inputs:setup führt nur die noch offenen Migrationen dieses Plugins aus, nichts von der Anwendung oder von anderen Plugins. Das globale doctrine:migrations:migrate bleibt als Alternative nutzbar.
- Idempotent: Gibt es keine neue Migration, passiert nichts ("Migrations are already up to date."). Der Command ist deshalb nach jedem
composer updategefahrlos. Welche Migration schon lief, entscheidet allein Doctrines Migrations-Tabelle, ein nach einer Datenbank-Wiederherstellung fehlender Stand wird also nachgeholt. - Routen-Prüfung: Fehlt der Routen-Import aus Schritt 2, gibt der Command den Snippet aus. In deine
config/schreibt er nie. - Voraussetzung: Sind Migrationen des Sylius-Core noch offen, bricht der Command ab und bittet darum, zuerst
php bin/console doctrine:migrations:migrateauszuführen. - Rückfrage: Vor dem Ausführen fragt der Command nach Bestätigung. In Skripten übergibst du
--no-interaction.
Update
composer update mmd/sylius-product-custom-inputs-plugin
php bin/console mmd:product-custom-inputs:setup
php bin/console cache:clear
Deinstallation
Reihenfolge einhalten, damit das Bundle beim Zurückrollen noch registriert ist:
-
Eigene Template-Overrides des Plugins entfernen.
-
Migrationen zurückrollen, pro Version einzeln, neueste zuerst:
php bin/console doctrine:migrations:execute --down 'Mmd\SyliusProductCustomInputsPlugin\Migrations\Version20260917150000' php bin/console doctrine:migrations:execute --down 'Mmd\SyliusProductCustomInputsPlugin\Migrations\Version20260917120000' php bin/console doctrine:migrations:execute --down 'Mmd\SyliusProductCustomInputsPlugin\Migrations\Version20260915165859' -
Routen-Import und Bundle-Eintrag entfernen.
-
composer remove mmd/sylius-product-custom-inputs-plugin
Das Zurückrollen ist teilweise verlustbehaftet: Die neueste Migration behält bei einem Feld mit mehreren Produkten nur die Zuordnung zur kleinsten Produkt-ID, die älteste löscht die Tabellen samt aller Kundeneingaben.