Skip to content
Snippets Groups Projects
  • Jared Hancock's avatar
    custom-data: Address major confusion · 4efef017
    Jared Hancock authored
    This feature addresses a major issue with the initial implementation of the
    custom data system. The original system confused the usage of
    database-backed field (dynamic-fields) and their corresponding
    implementation. This created the need to crate awkward caching pieces to
    ensure that validation errors and data was maintained. Furthermore, the
    system confused the linking between form instances (dynamic-entry) and the
    form used to represent that entry.
    
    This patch addresses the confusion in two ways:
    
    Dynamic form entries do not link directly to the dynamic form. Instead, the
    ::getForm() method returns something from the forms API directly.
    Furthermore, the ::getFields() method does not return dynamic field
    instances (database backed / designed fields). Instead, the actual
    implementation of the fields from the forms API is retrieved. This allows
    the fields to *always* be cached, which helps preserve data and validation
    state.
    
    Secondly, the dynamic form uses the same system, so that requests to turn a
    dynamic form into a form (via ::getForm) will also result in the same
    behavior, again, where the fields are represented as forms API fields rather
    than the dynamic fields.
    
    So going forward, the dynamic fields are *only* used to create corresponding
    forms API field implementations. The are associated with the dynamic
    counterparts as sparingly as possible.
    4efef017