yform icon indicating copy to clipboard operation
yform copied to clipboard

LifeCycle Diagram erstellen

Open tbaddade opened this issue 1 year ago • 1 comments

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.

tbaddade avatar Apr 15 '24 10:04 tbaddade

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

  • objparams werden 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-Templates
  • value_pool['sql']: Werte für Datenbank-Operationen
  • value_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_INIT
  • YFORM_VALIDATE
  • YFORM_SAVED
  • YFORM_DATA_ADDED
  • YFORM_DATA_UPDATED

skerbis avatar Jan 30 '25 10:01 skerbis