Contact Requests: Installation und Betrieb
Sylius Contact Requests Plugin - Installation per Composer (Packeton), Update, alte Anfragen regelmäßig löschen, Deinstallation in der richtigen Reihenfolge
Contact Requests: Installation und Betrieb
Live Demo: Teste dieses und weitere Plugins live — ohne Installation, ohne Risiko: demo.markus-michalski.net
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.
{ "repositories": [{ "type": "composer", "url": "https://packeton.markus-michalski.net" }] }
composer require mmd/sylius-contact-requests-plugin
-
Bundle in
config/bundles.phpregistrieren:Mmd\SyliusContactRequestsPlugin\MmdSyliusContactRequestsPlugin::class => ['all' => true], -
Admin-Routen importieren, zum Beispiel in
config/routes/mmd_sylius_contact_requests.yaml:mmd_sylius_contact_requests_admin: resource: "@MmdSyliusContactRequestsPlugin/config/routes/admin.yaml"Das Plugin bringt keine eigenen Shop-Routen mit. Es klinkt sich nur über zwei Decorator-Services in den Mailversand des Sylius-Kontaktformulars ein. Eine zweite Importzeile für
shop.yamlist deshalb nicht nötig. -
Setup-Befehl ausführen:
bin/console mmd:contact-requests:setupmmd:contact-requests:setupführt nur die eine Migration dieses Plugins aus, nie Migrationen deiner Anwendung oder anderer Plugins. Der Befehl ist idempotent: Ist die Migration schon gelaufen, passiert nichts, auch nicht nach einemcomposer update. Sind noch Sylius-eigene Migrationen offen, bricht er ab und weist dich an, zuerstdoctrine:migrations:migrateauszuführen. Außerdem prüft er, ob die Route aus Schritt 2 importiert ist, und gibt andernfalls den passenden Snippet aus. In deinconfig/-Verzeichnis schreibt er nie. Das üblichedoctrine:migrations:migratefunktioniert weiterhin als Alternative. Führe den Befehl mit demselben Benutzer aus wie deine übrigen Konsolenbefehle und ergänze in Skripten--no-interaction.
Ab jetzt speichert das Plugin jede Anfrage aus dem Kontaktformular im Shop und über die Shop API. Einstellungen sind dafür nicht nötig, und einen Ein/Aus-Schalter pro Channel gibt es nicht (siehe Konfiguration).
Update
composer update mmd/sylius-contact-requests-plugin
bin/console mmd:contact-requests:setup --no-interaction
bin/console cache:clear
Den Setup-Befehl kannst du nach jedem Update bedenkenlos erneut ausführen: Ohne neue Migration passiert nichts.
Alte Anfragen regelmäßig löschen
Gespeicherte Anfragen enthalten personenbezogene Daten (Name, E-Mail, Nachricht) und werden nie automatisch gelöscht. Richte dafür einen eigenen Cronjob ein:
| Befehl | Empfohlenes Intervall | Beschreibung |
|---|---|---|
bin/console mmd:contact-requests:purge --older-than=90 |
wöchentlich oder monatlich | Löscht alle Anfragen endgültig, die älter sind als die angegebene Anzahl Tage (Standard: 90) |
Beispiel für die Crontab des Benutzers, unter dem auch deine übrigen Konsolenbefehle laufen (Pfad anpassen):
# jeden Montag um 03:00 Uhr: Anfragen löschen, die älter als 90 Tage sind
0 3 * * 1 cd /var/www/shop && bin/console mmd:contact-requests:purge --older-than=90 --no-interaction
Es gibt keinen Papierkorb und keine Wiederherstellung. Eine gelöschte Anfrage ist endgültig weg.
Deinstallation
Die Reihenfolge ist wichtig, weil Doctrine die Migration nur kennt, solange das Bundle noch registriert ist:
-
Den Cronjob für
mmd:contact-requests:purgeentfernen. -
Bei noch registriertem Bundle die Migration zurückrollen:
bin/console doctrine:migrations:execute --down 'Mmd\SyliusContactRequestsPlugin\Migrations\Version20260904121117' -
Den Routen-Import und den Bundle-Eintrag in
config/bundles.phpentfernen, danachcomposer remove mmd/sylius-contact-requests-pluginausführen.
Statt die Migration zurückzurollen, kannst du die Tabelle
mmd_sylius_contact_requests_contact_requestauch von Hand löschen. Dann musst du zusätzlich die ZeileMmd\SyliusContactRequestsPlugin\Migrations\Version20260904121117aus der Tabelledoctrine_migration_versionsentfernen.