Product Custom Inputs: Fehlerbehebung
Fehlerbehebung für Product Custom Inputs: fehlender Menüpunkt, Felder erscheinen nicht, gesperrter Button, 404 an der Shop API, bekannte Einschränkungen und FAQ.
Product Custom Inputs: Fehlerbehebung
Diese Dokumentation bezieht sich immer auf die aktuellste veröffentlichte Version.
Der Admin-Menüpunkt fehlt
Symptom: Unter "MMKreativ Plugins" erscheint kein Eintrag "Produkt-Zusatzfelder" (die Gruppe selbst kann von einem anderen Plugin stammen).
Prüfen: Steht der Routen-Import in config/routes.yaml? Das Plugin blendet den Eintrag bewusst aus, wenn die Route nicht registriert ist, statt einen Fehler zu werfen.
Lösung: Den Import @MmdSyliusProductCustomInputsPlugin/config/routes/admin.yaml ergänzen (siehe Installation) und den Cache leeren. Der Setup-Command gibt den Snippet ebenfalls aus, wenn der Import fehlt.
Der Setup-Command bricht ab
Symptom: mmd:product-custom-inputs:setup endet mit einer Fehlermeldung.
Prüfen:
- Meldet er, dass Migrationen offen sind, auf denen das Plugin aufbaut ("Migrations this plugin builds on are still open")? Dann sind Migrationen des Sylius-Core noch nicht ausgeführt.
- Meldet er, dass die Migrationen nicht bei Doctrine registriert sind? Dann ist das Bundle nicht aktiviert, oder
sylius_core.prepend_doctrine_migrationssteht auffalse.
Lösung: Im ersten Fall php bin/console doctrine:migrations:migrate ausführen und den Setup-Command wiederholen. Im zweiten Fall Bundle-Eintrag und die Einstellung prüfen.
Die Felder erscheinen nicht im Add-to-Cart-Formular
Symptom: Auf der Produktseite fehlen die Eingabefelder.
Prüfen:
- Ist das Feld dem Produkt im Admin zugeordnet (Produktformular, Bereich "Allgemein")?
- Steht der Schalter "Aktiviert" auf der Einstellungsseite an?
- Wurde der Setup-Command ausgeführt?
Lösung: Zuordnung setzen, Schalter aktivieren oder php bin/console mmd:product-custom-inputs:setup ausführen.
Das Plugin bricht bei Datenbankfehlern nicht ab, sondern schreibt sie ins Log: Fehlt die Tabelle noch, erscheint das Formular ohne Felder, lässt sich der Schalter nicht lesen, gilt das Plugin als aktiviert.
Prüfe bei fehlenden Feldern deshalb zuerst das Log.
Der Button bleibt nach einem Validierungsfehler gesperrt
Symptom: Nach einer fehlerhaften Eingabe lässt sich "In den Warenkorb" nicht mehr anklicken, auch nach der Korrektur.
Prüfen: Überschreibst du custom_inputs.html.twig auf der Produktseite?
Lösung: Die data-model-Behandlung aus dem Original-Template übernehmen (siehe Storefront).
POST an die Shop API liefert 404
Symptom: POST .../custom-inputs antwortet mit 404, obwohl Bestellung und Position existieren.
Prüfen:
- Ist die Bestellung noch ein Warenkorb?
- Gehört die Bestellung dem angemeldeten Kunden, oder ist sie eine Gast-Bestellung?
- Gehört das Feld zum Produkt der Position?
- Ist das Plugin im Admin aktiviert?
Lösung: Den Fall beheben, der zutrifft. Alle vier führen bewusst zur selben 404-Antwort.
Neue Eingaben überschreiben alte
Das ist gewollt: Dieselbe Variante nochmals in den Warenkorb zu legen erhöht die Menge der bestehenden Position, die neuen Eingaben ersetzen die bisherigen.
Bekannte Einschränkungen
- Felder lassen sich über die API nicht anlegen oder ändern, nur lesen und löschen.
- Gleichzeitige POSTs für dasselbe Feld an derselben Position sind nicht abgesichert.
- Datum und Uhrzeit werden in der Anzeige nicht an die Locale angepasst.
- Rechnung und Lieferschein sind nicht abgedeckt. Die Eingaben lassen sich aber mit der Twig-Funktion
mmd_order_item_custom_input_valuesin eigene Templates übernehmen. - Das Behat-Gerüst ist angelegt, enthält aber noch keine Szenarien. Getestet wird mit PHPUnit.
FAQ
Kann ein Feld bei jedem Produkt anders gelten? Nein. Pflichtfeld, Position und alle Grenzen gehören zum Feld. Für abweichende Regeln legst du ein zweites Feld an.
Gibt es Einstellungen pro Channel? Nein, nur den shop-weiten Schalter.
Bleiben Werte erhalten, wenn ich ein Feld vom Produkt löse? Ja, bereits erfasste Eingaben an Bestellpositionen bleiben bestehen. Löschst du das Feld selbst, werden seine Werte mitgelöscht.