Support Form: Fehlerbehebung und FAQ
Support Form für Sylius - typische Probleme mit Symptom, Prüfung und Lösung, bekannte Einschränkungen (kein Spam-Schutz, nur MySQL/MariaDB) und häufige Fragen
Support Form: Fehlerbehebung und FAQ
Live Demo: Teste dieses und weitere Plugins live — ohne Installation, ohne Risiko: demo.markus-michalski.net
Fehlerbehebung
Symptom: In der Admin-Sidebar fehlt unter „MMKreativ Plugins“ der Eintrag „Support-Formular“.
Prüfen: Ist das Bundle in config/bundles.php registriert? Ist die Admin-Route mmd_sylius_support_form_plugin_admin_support_form_channel_configuration_index importiert (siehe Installation)?
Lösung: Fehlenden Eintrag ergänzen und bin/console cache:clear ausführen. Der Menüeintrag erscheint erst, wenn die Admin-Routen importiert sind. Fehlt der Import, blendet das Plugin den Eintrag aus, statt das Admin-Menü zu stören.
Symptom: /support liefert einen 404-Fehler.
Prüfen: Ist die Datei shop.yaml des Plugins in deinen Routen importiert?
Lösung: Den Import mmd_sylius_support_form_shop aus der Installation ergänzen. bin/console mmd:support-form:setup meldet fehlende Routen-Imports und gibt den passenden Snippet aus.
Symptom: mmd:support-form:setup bricht ab und meldet, die Migrationen seien Doctrine nicht bekannt.
Prüfen: Ist das Bundle registriert, und wurde der Cache seitdem geleert? Steht sylius_core.prepend_doctrine_migrations nicht auf false?
Lösung: Bundle-Eintrag und Einstellung prüfen, Cache leeren und den Befehl erneut ausführen.
Symptom: mmd:support-form:setup bricht ab und verweist auf offene Migrationen von Sylius.
Prüfen: Sind Migrationen von Sylius selbst noch nicht ausgeführt, zum Beispiel nach einem Sylius-Update?
Lösung: Zuerst bin/console doctrine:migrations:migrate ausführen, danach den Setup-Befehl erneut.
Symptom: Das Formular zeigt für den Betreff ein Freitextfeld statt der erwarteten Auswahlliste.
Prüfen: Gibt es für den Channel eine Channel-Konfiguration? Steht die Betreff-Quelle auf „Produkte“ oder „Kategorien“, und ist die Liste dieser Quelle gefüllt?
Lösung: Konfiguration anlegen und Produkte bzw. Kategorien auswählen. Ohne Konfiguration oder bei leerer aktiver Liste zeigt das Formular absichtlich ein Freitextfeld.
Symptom: Anfragen erscheinen im Admin, aber es kommt keine Benachrichtigung an.
Prüfen: Hat die Channel-Konfiguration eine Empfänger-E-Mail, oder hat der Channel eine Kontakt-E-Mail? Steht im Log Failed to send the support request notification email (bzw. ... confirmation email bei der Kundenbestätigung)?
Lösung: Eine der beiden Adressen eintragen. Hat der Channel keine Empfängeradresse, verschickt das Plugin keine Benachrichtigung. Steht der Log-Eintrag da, liegt der Fehler beim Mailversand. Geloggt werden nur Exception-Klasse und Code, nie die Meldung. Die Anfrage selbst ist in jedem Fall gespeichert.
Symptom: Der Kunde bekommt keine Bestätigungsmail.
Prüfen: Gibt es ein Zusatzfeld vom Typ E-Mail, und hat der Kunde es beantwortet?
Lösung: Ein Feld vom Typ E-Mail anlegen (siehe Konfiguration). Die Bestätigung geht nur an die Adresse aus einem beantworteten E-Mail-Feld.
Symptom: In der Einwilligung fehlt der Link zur Datenschutzerklärung.
Prüfen: Ist bei der Channel-Konfiguration eine Seite eingetragen? Existiert die Route, wenn du einen Routennamen angegeben hast?
Lösung: Eintrag ergänzen oder korrigieren. Ein unbekannter Routenname führt dazu, dass die Einwilligung ohne Link erscheint.
Symptom: Die Shop API antwortet auf POST /shop/support-requests mit 422 und The subject must be one of the channel's available choices.
Prüfen: Hat der Channel eine Betreff-Auswahl? Was liefert GET /shop/support-form-subject-choices?
Lösung: Als subject einen der value-Werte aus dieser Liste senden.
Symptom: Nach der Installation auf PostgreSQL fehlen Tabellen, oder die Migration schlägt fehl.
Prüfen: Welche Datenbank läuft?
Lösung: Es gibt keine. Die Migrationen sind MySQL-DDL, PostgreSQL wird nicht unterstützt.
Bekannte Einschränkungen
- Kein eigener Spam-Schutz. Das Formular schützt sich nicht selbst vor Bots. Die Erweiterungspunkte (siehe Erweiterbarkeit) sind dafür vorbereitet, ein fertiger Schutz gehört aber nicht zum Plugin.
- Die Bestätigungsmail geht an jede eingetippte Adresse. Ohne Spam-Schutz kann ein Bot deinen Shop dazu bringen, Mails an beliebige Dritte zu schicken. Die Mail wiederholt Betreff und Antworten genau so, wie sie abgesendet wurden, nur als Text und nicht als HTML. Ein Angreifer kann also eigenen Text unter deinem Absender zustellen lassen. Binde den Schutz ein, bevor du das Formular öffentlich verlinkst.
- Kein Name zum Vorausfüllen. Für eingeloggte Kunden füllt das Plugin nur die E-Mail-Adresse vor, über das erste Feld vom Typ E-Mail. Ein festes Namensfeld gibt es nicht.
- Zusatzfelder gelten für alle Channels. Nur Betreff-Quelle, Empfänger und Datenschutz-Link sind pro Channel einstellbar.
- Die Suche im Admin deckt nur E-Mail und Betreff ab. Die Antworten auf Zusatzfelder liegen in einer nicht durchsuchbaren Spalte.
- Nur MySQL/MariaDB.
- Keine automatische Löschung. Ohne Cronjob (siehe Installation) bleiben Anfragen unbegrenzt gespeichert.
FAQ
Allgemein
Blockiert ein Fehler beim Mailversand die Anfrage? Nein. Die Anfrage wird gespeichert, bevor die Mails rausgehen. Scheitert eine Mail, wird nur der Fehlertyp protokolliert, und die andere Mail geht trotzdem raus. Der Kunde sieht keinen Fehler.
Was passiert mit Anfragen, wenn ich einen Channel lösche? Sie bleiben erhalten. Nur die Channel-Angabe wird leer.
Kann ich eine Anfrage nachträglich bearbeiten? Nein. Eingegangene Anfragen lassen sich ansehen und löschen.
Konfiguration
Muss das Formular einen Namen abfragen? Nein. Außer Betreff und Einwilligung ist nichts fest vorgegeben. Wenn du einen Namen willst, legst du ein Textfeld dafür an.
Kann ich einen Channel vom Formular ausnehmen? Eine Einstellung dafür gibt es nicht. Das Formular unter /support ist für jeden Channel erreichbar. Ohne Konfiguration zeigt es einen freien Betreff.
Was ändert sich an alten Anfragen, wenn ich ein Feld umbenenne? Nichts. Jede Anfrage speichert die Bezeichnung des Feldes zum Zeitpunkt des Absendens.
Kompatibilität
Funktioniert das Plugin mit Sylius 2.2 und 2.3? Ja, beide Versionen werden getestet.
Funktioniert das Plugin mit API Platform 4 und 5? Ja. Der einzige für Clients sichtbare Unterschied ist der Statuscode bei einem falschen Datentyp von consent, siehe Shop API.
Ersetzt das Plugin das Sylius-Kontaktformular? Nein. Es liegt unabhängig daneben unter /support.