2017-03-29 15 views
1

전환 가능한 필드에 중첩 된 여러 개의 기본 필드 (텍스트)로 구성된 대화 상자를 정의해야합니다.이 필드 자체는 다중 필드에 중첩 된 복합 필드에 중첩되어 있습니다 .복잡한 Magnolia 양식에 사용하는 transformerClasses

Multivalue 
    -> Composite 
    -> Switchable 
     -> textField1 
     -> textField2 
    -> generic textField (belonging to composite, but not to switchable) 

그러나 내가 필요로하는 transformerClasses의 올바른 조합을 찾을 수 없습니다. multiValue 및 composite 필드에 해당 DelegatingXXTransformer 클래스를 사용하면 거의 예상대로 작동하지만 위임 용 변환기는 필요한 UI 컨트롤 (화살표 아래/위로) 버튼을 숨 깁니다 (이미지 참조). 하지만 그 통제가 필요합니다. transformerClass가 모든 요소에 사용할 정보가 필요합니다. UI 컨트롤을 잃지 않지만 여전히 2보다 높은 레벨로 중첩 된 필드를 처리 할 수 ​​있어야합니다. 어쨌든이 문제를 해결하려면?

enter image description here

관련 YAML - 구성 :

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://" 

답변

2

위임 변압기 멀티 필드의 서브 필드의 순서를 지원하지 않습니다. 이것은 단순히 각 개별 필드에 지속성을 위임하고 해당 필드가 유지되는 방식을 제어하지 못하기 때문입니다. 그 하위 필드는 주위 필드에 대한 지식이 없으므로 아무 것도 할 수 없습니다.

유일한 해결책은 위임 용 변압기 이외의 것을 사용하는 것입니다. 또는 사용 가능한 변압기가 사용자의 요구에 맞지 않는 경우에는 직접 작성하십시오.

1 월

+1

감사합니다. :) – lunatikz