yform
yform copied to clipboard
LifeCycle Diagram erstellen
https://vuejs.org/guide/essentials/lifecycle#lifecycle-diagram
Das könnte ich mir auch gut für YForm vorstellen. Wann passiert was.
- YForm initialisieren
- Value build
- Pre-, Post, Validierung
- Action
- Send
- etc.
in etwa so?
YForm Lifecycle
Ablauf-Diagramm
stateDiagram-v2
[*] --> Initialize: YForm Constructor
Initialize --> PreBuildValuesAndActions: Load Input Values
PreBuildValuesAndActions --> BuildValueObjects: Create Value Objects
BuildValueObjects --> BuildValidateObjects: Create Validate Objects
BuildValidateObjects --> BuildActionObjects: Create Action Objects
BuildActionObjects --> ValuePreValidation: Submit
ValuePreValidation --> ValueInitAndEnter: No Validation Errors
ValuePreValidation --> HasErrors: Validation Errors
ValueInitAndEnter --> ValidateExecution: Execute Value Objects
ValidateExecution --> ValuePostValidation: Run Validations
ValuePostValidation --> ActionExecution: No Validation Errors
ValuePostValidation --> HasErrors: Validation Errors
ActionExecution --> PreAction: Pre Actions
PreAction --> PostAction: Execute Actions
PostAction --> ActionsDone: Post Actions
ActionsDone --> [*]: Form Done
HasErrors --> [*]: Show Form Again
note right of Initialize
Load parameters, form elements
Initialize objparams
end note
note right of PreBuildValuesAndActions
Setup objparams,
session data,
CSRFToken
end note
note right of ValuePreValidation
CSRF check
Custom pre-validation
end note
note right of ValuePostValidation
Validate rules execution
Fill value pools
end note
note right of ActionExecution
Email sending
Database operations
Custom actions
end note
Detaillierter Lifecycle-Ablauf
1. Initialisierung
YForm Constructor
- Der YForm Constructor wird aufgerufen
- Die Basis-Parameter werden gesetzt
- Ein einzigartiger Form-Name wird generiert falls nicht angegeben
- Debug-Modus wird geprüft und ggf. aktiviert
Parameter-Initialisierung
objparamswerden mit Standardwerten initialisiert- Formular-spezifische Parameter werden gesetzt
- Template-Pfade werden definiert
- Error- und Warning-Handler werden initialisiert
2. Build-Phase
Pre-Build
- Request-Daten werden geladen
- Session-Handling wird eingerichtet
- CSRF-Token wird generiert oder validiert
- Objekt-Parameter werden für den Build-Prozess vorbereitet
Value Objects erstellen
- Value-Definitionen werden durchlaufen
- Für jeden Value-Type wird ein entsprechendes Objekt instanziiert
- Default-Werte werden gesetzt
- Value-spezifische Parameter werden initialisiert
Validate Objects erstellen
- Validierungs-Regeln werden aus den Definitionen geladen
- Validate-Objekte werden erstellt und konfiguriert
- Abhängigkeiten zwischen Values und Validates werden hergestellt
Action Objects erstellen
- Action-Definitionen werden verarbeitet
- Action-Objekte werden instanziiert
- Action-Parameter werden gesetzt
3. Validierungs-Phase
Pre-Validation
- CSRF-Check wird durchgeführt
- Basis-Validierungen werden ausgeführt
- Formular-weite Validierungen werden geprüft
- Custom Pre-Validate Funktionen werden ausgeführt
Value Processing
- Jedes Value-Objekt wird initialisiert (
init()) - Value-Objekte werden ausgeführt (
enterObject()) - Werte werden in die entsprechenden Pools eingetragen
- Datei-Uploads werden verarbeitet
Validation Execution
- Alle Validierungs-Regeln werden geprüft
- Fehler werden gesammelt
- Warning-Messages werden generiert
- Validierungs-Ergebnisse werden in den Objekt-Parametern gespeichert
Post-Validation
- Value-Pools werden finalisiert
- Letzte Validierungen werden durchgeführt
- SQL/Email-Pools werden vorbereitet
- Validierungs-Status wird final gesetzt
4. Action-Phase
Pre-Actions
- Vorbereitende Aktionen werden ausgeführt
- Datenbank-Verbindungen werden vorbereitet
- Temporäre Daten werden bereinigt
Action Execution
- SQL-Aktionen werden ausgeführt (Insert/Update/Delete)
- E-Mails werden gesendet
- Dateien werden gespeichert
- Redirects werden vorbereitet
Post-Actions
- Aufräumarbeiten werden durchgeführt
- Temporäre Daten werden gelöscht
- Sessions werden aktualisiert
- Cache wird ggf. geleert
5. Abschluss
Erfolgreicher Abschluss
- Erfolgsmeldungen werden generiert
- Weiterleitungen werden ausgeführt
- Formulardaten werden zurückgesetzt
Fehlerfall
- Fehlermeldungen werden vorbereitet
- Formular wird mit Fehlern neu gerendert
- Eingegebene Daten werden beibehalten
Besonderheiten
Value Pools
YForm verwendet verschiedene Value-Pools für unterschiedliche Zwecke:
value_pool['email']: Werte für E-Mail-Templatesvalue_pool['sql']: Werte für Datenbank-Operationenvalue_pool['files']: Hochgeladene Dateien
CSRF-Protection
- Automatischer CSRF-Schutz bei aktivierter Option
- Token-Generierung und Validierung
- Konfigurierbare Fehlerbehandlung
Debugging
- Ausführliche Debug-Ausgaben wenn aktiviert
- SQL-Debugging möglich
- Schrittweise Nachverfolgung des Lifecycles
Extension Points
Wichtige Extension Points im Lifecycle:
YFORM_INITYFORM_VALIDATEYFORM_SAVEDYFORM_DATA_ADDEDYFORM_DATA_UPDATED