Also ich habe sozusagen zwei Fliegen mit einer Klappe geschlagen:

1. Individuelle Model-Validierung (inspiriert von http://blog.teamgeist-medien.de - 
"Dynamische Validierung von Models je nach Formularauswahl")
2. Vergleich bestimmter Properties (eine Art sys_history für eigene Extensions 
mit Änderungen über das Frontend)

Ich versuche mal kurz meine Lösung aufzuzeigen:

Zu #1:
Gehen wir davon aus ich habe ein Model "MyUser" (extends feuser) - In diesem 
Model werden alle getter und setter sowie Variablen-Deklaration OHNE jegliche Validierung 
(außer es wird von einem bestimmten Feld immer eine Validierung benötigt) gesetzt.

Für die Registrierung habe ich ein Model "MyUserCreate" (extends MyUser). Hier 
setze ich nur noch die Variablen-Deklarationen MIT meinen Validierungen welche ich bei 
der Registrierung benötige (z.B. Username, Email, FirstName, LastName, etc.)

Für, zum Beispiel, ein Profil-Update habe ich ein Model "MyUserUpdate" (extends 
MyUser). Da der Nutzer zum Beispiel nur noch seine E-Mail Adresse und seinen Vornamen 
ändern kann setze ich in diesem Model nur noch eine Variablen-Deklaration MIT Validierung 
für email und firstName.

Zu #2:
Zusätzlich habe ich folgendes gemacht:
- Da ich eh für einzelne Aktionen (leider) einzelne Models setze (sofern nötig!) setze ich dort auch gleich eine 
Variable/Array mit $fieldlist - Bei einem Profilupdate könnte das zum Beispiel "email, first_name" sein. Beim 
Update des Datensatzes hole ich mir das aktuelle Objekt und das "zukünftige Objekt" und vergleiche 
ausschließlich die in $fieldlist angegebenen Properties. Leider etwas umständlich aber man könnte auch in dem 
"MyUser" Model bereits ein "Standard-Set" an Werten angeben welche verglichen werden sollen.

- In dem Model "MyUser" habe ich eine zusätzliche Variable (+setter) gesetzt mit 
"tableName = 'fe_users';" - Dies ermöglicht mir beim späteren Vergleich (vorher/nachher) 
bzw. beim Schreiben in die DB zusätzlich zur RecUid, fieldlist und historyData auch den TableName 
zu setzen (sofern man unterschiedliche Tabellen/Objekte) in einer allgemeinen Logging-Tabelle 
ablegen möchte.

Ich hoffe ich konnte das einigermaßen korrekt rüber bringen. Vielleicht gibt es 
hier und da etwas zu verbessern?

--
LG,
 Mario
_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Antwort per Email an