Kunden-Angaben zu einem spezifischen Produkt im Checkout

Ich entwickle gerade an einem Shopware 5.5.8 Shop der Event-Tickets verkaufen soll. Beim Verkauf (im Checkout) sollte man den Vor- und Nachnamen pro Ticket angeben müssen (Pflichtfeld! Keine Zahlung ohne Angabe(n) möglich).

z.B. Ich habe 4 Tickets zu einer Veranstaltung im Warenkorb, daher muss ich 4x Vor- und Nachamen eingeben bevor ich zur Zahlung weiterkomme.

Die Anzahl der Felder müssten beim Ändern der Menge dynamisch angepasst werden.

Da ich relativ neu in der Shopware Entwicklung bin, kenne ich mich nicht so gut aus und habe hierzu folgende Fragen:

  1. Gibt es vielleicht schon eine Lösung hierfür?
  2. Wäre dies besser als Plugin, oder in der Custom Theme (bereits bestehend) angesiedelt?
  3. Wo würde ich die Komponenten ansetzen?
  4. Welche Events benötige ich? (Gibt es hierfür eine Übersicht?)
  5. Wie schreibe ich eine JavaScript Komponente für die dynamische anpassung der Felder?

Ich entschuldige mich falls die Frage zu generell oder sonst unpassend ist.

Update:

Bin etwas weiter gekommen, jedoch jetzt etwas stecken geblieben. Ich habe 2 neue Freitext-Felder hinzugefügt.

  1. event_ticket_with_names - Werden Vor- und Nachname Felder angezeigt? (Checkbox)
  2. event_ticket_names_required - Sind die Vor- und Nachname Felder pflichtfelder? (Checkbox)

Nach einer kurzen editierung des frontend/checkout/items/product.tpl habe ich nun folgendes erzielt:

Die Menge, bzw. Anzahl, der Felder wird automatisch aktualisiert, da ein GET Request ausgelöst wird wenn man die Menge ändert (wusste ich nicht). Daher kein JavaScript nötig.

Das Problem ist nun, dass der Browser das required=„required“ von den Inputs ignoriert. Dies liegt daran, dass die Felder nicht in einer Form sind. Der Bestellabschluss wird irgendwie über JavaScript ausgelöst. Jetzt muss ich noch folgendes tun:

  • Meine Felder als Pflichtfelder von der Seite erkennen lassen
  • Die Daten im Request irgendwo abfangen und ablegen/speichern/weitersender/wasauchimmer

Jede hilfe hiermit wäre äußerst hilfreich!