Skip to content

LifeCycle Diagram erstellen #1500

Open
Open

Description

@tbaddade

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.

Activity

  1. skerbis commented on Jan 30, 2025

    @skerbis
    Contributor

    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
    
    Loading

    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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions