Hallo. Ich hänge mal wieder an einer Stelle und hoffe, das mir jemand von euch weiter helfen kann. Ich bin noch dabei, mich in extbase reinzuarbeiten. Bei folgendem Beispiel, dass ich mir zum Einarbeiten ausgesucht habe, komme ich nun nicht mehr weiter (ich verwende Typo3 6.2 beta2):
Ich möchte eine Newsletter-Anmeldung realisieren. Wenn sich ein Nutzer für einen Newsletter anmeldet, wird ein Eintrag in einer Newsletter-Tabelle für ihn angelegt. Wenn sich der Nutzer abmelden möchte, wird er aus der Tabelle gelöscht. In der Tabelle sind also nur die Nutzer, die einen Newsletter wollen. Mein Model besitzt entsprechend nur die Eigenschaften "email", "registrierDatum", "bestaetigungsDatum" und die üblichen Typo3-Felder.
Es gibt nun ein Formular, in welches man die E-Mail-Adresse einträgt und dann auswählen soll, ob man sich an- oder abmelden möchte (mit Radio-Buttons). Die beiden Informationen für die Datumsangeben werden intern gesetzt, spielen hier also keine Rolle.
Nun zum Problem:
Es handelt sich bei den Radiobuttons "anmelde/abmelden" nicht um Eigenschaften, die zum Model gehören. Da ich sowohl im Formular als auch in den verarbeitenden Aktionen (edit und save) als Parameter ein Objekt erwarte, das dem oben genannten Model entspricht, erhalte ich beim Senden des Formulars den Fehler:
Exception while property mapping at property path ""😛roperty "register_action" was not found in target object of type "XY\Newsletter\Domain\Model\Newsletter"
Meine Frage:
Wie gehe ich mit einem Formular um, wenn ich Model-fremde Felder einfüge? Mein Ziel ist es, dass das Objekt trotzdem über den Validator anhand der Angaben im Model geprüft wird.
Ich habe bisher eine Lösung gesehen, in welcher die Model-fremden Eigenschaften einfach mit ins Model aufgenommen wurden (ohne die Zuordnung zu einem Datenbankfeld). Aber das finde ich recht unsauber und kann irgendwie nicht Sinn der Sache sein.
Dann habe ich folgende Möglichkeit gefunden: http://blog.sebastiaandejonge.com/articles/2013/january/17/form-validation-of-non-domain-model-properties-with-extbase/
Die sieht aber ziemlich umständlich aus und ich wüsste nicht, wie sie das Problem mit der oben genannten Fehlermeldung beheben soll (ich komme ja nicht mal bis zum Validieren).
Ansonsten würde mir nur noch einfallen, das Formular ohne Zuordnung zu einem Objekt/Model zu senden und die request-Daten in einem eigenen Validator abzuarbeiten. Das dürfte aber ebenfalls unsauber sein und mir fehlt die Objekt-Zuordnung, weshalb ich die Eigenschaften nicht mehr anhand der Kommentare im Model validieren lassen kann.
Wie löst man so ein Problem richtig und sauber? (Ein anderes Beispiel für so einen Fall wäre auch das Einfügen weiterer Felder aufgrund von Spamschutz - z.B. Honeypot, Timestamp, Captcha, etc. - all diese Daten hätten auch nichts mit einem bestimmten Objekt zu tun).
Wäre wirklich dankbar für Vorschläge oder Tipps!