Markus Michalski FAQ

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

English Version

Zurück zur Übersicht

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
  1. Bundle in config/bundles.php registrieren:

    Mmd\SyliusContactRequestsPlugin\MmdSyliusContactRequestsPlugin::class => ['all' => true],
    
  2. 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.yaml ist deshalb nicht nötig.

  3. Setup-Befehl ausführen:

    bin/console mmd:contact-requests:setup
    

    mmd:contact-requests:setup fü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 einem composer update. Sind noch Sylius-eigene Migrationen offen, bricht er ab und weist dich an, zuerst doctrine:migrations:migrate auszuführen. Außerdem prüft er, ob die Route aus Schritt 2 importiert ist, und gibt andernfalls den passenden Snippet aus. In dein config/-Verzeichnis schreibt er nie. Das übliche doctrine:migrations:migrate funktioniert 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:

  1. Den Cronjob für mmd:contact-requests:purge entfernen.

  2. Bei noch registriertem Bundle die Migration zurückrollen:

    bin/console doctrine:migrations:execute --down 'Mmd\SyliusContactRequestsPlugin\Migrations\Version20260904121117'
    
  3. Den Routen-Import und den Bundle-Eintrag in config/bundles.php entfernen, danach composer remove mmd/sylius-contact-requests-plugin ausführen.

Statt die Migration zurückzurollen, kannst du die Tabelle mmd_sylius_contact_requests_contact_request auch von Hand löschen. Dann musst du zusätzlich die Zeile Mmd\SyliusContactRequestsPlugin\Migrations\Version20260904121117 aus der Tabelle doctrine_migration_versions entfernen.