2017-03-29 2 views
1

Ich muss einen Dialog definieren, der aus mehreren Basisfeldern (Text) besteht, die in einem zusammenschaltbaren Feld verschachtelt sind, das selbst in einem mehrwertigen Feld verschachtelt ist .Welche TransformerClasses für komplexe Magnolia-Formulare verwenden

Allerdings kann ich nicht die richtige und funktionierende Kombination von TransformerClasses finden, die ich verwenden muss. Bei Verwendung der entsprechenden Klassen DelegatingXXTransformer für das Feld multiValue und das zusammengesetzte Feld funktionierte es fast wie erwartet, aber diese delegierenden Transformatoren verbergen die erforderlichen Schaltflächen für die UI-Steuerung (Pfeil nach unten/oben) (siehe Bild). Aber ich brauche diese Kontrollen. Ich brauche die Informationen, die transformerClass für jedes Element verwenden soll, um die ui-Steuerelemente nicht zu verlieren, aber dennoch verschachtelte Felder mit einem höheren Level als zwei verarbeiten zu können. Wie auch immer, um das zu lösen?

enter image description here

relevant yaml-config:

form: 
    tabs: 
    - name: tabMain 
    fields: 
     - name: mainNav 
     class: info.magnolia.ui.form.field.definition.MultiValueFieldDefinition 
     transformerClass: info.magnolia.ui.form.field.transformer.multi.DelegatingMultiValueSubnodeTransformer 
     field: 
      name: composite 
      class: info.magnolia.ui.form.field.definition.CompositeFieldDefinition 
      transformerClass: info.magnolia.ui.form.field.transformer.composite.DelegatingCompositeFieldTransformer 
      layout: vertical 
      fields: 
      - !include /module-ui/dialogs/common/link.yaml 
      - !include /module-ui/common/link-title.yaml 
      - !include /module-ui/dialogs/common/link-target.yaml 
actions: !include /module-ui/dialogs/actions/default.yaml 

link.yaml:

name: link 
class: info.magnolia.ui.form.field.definition.SwitchableFieldDefinition 
transformerClass: info.magnolia.ui.form.field.transformer.composite.SwitchableTransformer 
options: 
- name: internal 
    value: internal 
    selected: true 
- name: external 
    value: external 
    fields: 
    - name: internal 
     class: info.magnolia.ui.form.field.definition.LinkFieldDefinition 
     appName: pages 
     identifierToPathConverter: 
     class: info.magnolia.ui.form.field.converter.BaseIdentifierToPathConverter 
- name: external 
    class: info.magnolia.ui.form.field.definition.TextFieldDefinition 
    defaultValue: "http://" 

Antwort

2

Delegieren Transformatoren nicht unterstützen Reihenfolge der Teilfelder in Mehrfeld. Dies liegt an der Tatsache, dass sie die Persistenz einfach an jedes einzelne Feld delegieren und keine Kontrolle darüber haben, wie diese Felder persistiert werden. Diese Unterfelder haben dann keine Kenntnis von den umgebenden Feldern, so dass sie auch nichts tun können.

Die einzige Lösung ist, andere als delegierende Transformatoren zu verwenden, oder wenn keine der verfügbaren Transformatoren Ihren Anforderungen entsprechen, schreiben Sie Ihre eigenen.

Jan

+1

Danke für die Klärung :) – lunatikz

Verwandte Themen