哪些 transformerClasses 用于复杂的 Magnolia 表单
Which transformerClasses to use for complex Magnolia forms
我需要定义一个对话框,由嵌套在可切换字段中的几个基本字段(文本)组成,该字段本身嵌套在复合字段中,复合字段本身嵌套在多值字段中。
Multivalue
-> Composite
-> Switchable
-> textField1
-> textField2
-> generic textField (belonging to composite, but not to switchable)
但是我无法设法找到我需要使用的 transformerClasses 的正确和工作组合。如果在多值和复合字段上使用相应的 DelegatingXXTransformer
类,它几乎按预期工作,但那些委托转换器隐藏了 required UI-控件(箭头 down/up) 按钮(见图)。
但我需要那些控件。
我需要将哪个 transformerClass 用于任何元素的信息,以免丢失 ui 控件,但仍然能够处理级别高于两个的嵌套字段。
无论如何要解决这个问题?
相关的 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://"
委托转换器不支持多字段中子字段的排序。这是因为他们只是将持久性委托给每个单独的字段,并且无法控制这些字段的持久化方式。那些子字段不知道周围的字段,因此它们也无能为力。
唯一的解决方案是使用委托转换器以外的其他方式,或者如果 none 开箱即用的可用转换器满足您的需要,请编写您自己的转换器。
一月
我需要定义一个对话框,由嵌套在可切换字段中的几个基本字段(文本)组成,该字段本身嵌套在复合字段中,复合字段本身嵌套在多值字段中。
Multivalue
-> Composite
-> Switchable
-> textField1
-> textField2
-> generic textField (belonging to composite, but not to switchable)
但是我无法设法找到我需要使用的 transformerClasses 的正确和工作组合。如果在多值和复合字段上使用相应的 DelegatingXXTransformer
类,它几乎按预期工作,但那些委托转换器隐藏了 required UI-控件(箭头 down/up) 按钮(见图)。
但我需要那些控件。
我需要将哪个 transformerClass 用于任何元素的信息,以免丢失 ui 控件,但仍然能够处理级别高于两个的嵌套字段。
无论如何要解决这个问题?
相关的 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://"
委托转换器不支持多字段中子字段的排序。这是因为他们只是将持久性委托给每个单独的字段,并且无法控制这些字段的持久化方式。那些子字段不知道周围的字段,因此它们也无能为力。
唯一的解决方案是使用委托转换器以外的其他方式,或者如果 none 开箱即用的可用转换器满足您的需要,请编写您自己的转换器。
一月