Typo3: Flux & DisplayCond

4
我有以下的Flux模板:
<f:section name="Configuration">
  <flux:form id="galleria" enabled="TRUE" label="Galleria image & video plugin">
    <flux:form.sheet name="data" label="Images / Videos">
        <flux:form.section name="settings.items" label="Items" inherit="0">
            <flux:form.object name="item" label="Gallery item" inherit="0">
                <flux:field.select name="type" label="Type"
                                            items="{0: 'Please select', 1: 'Image', 2: 'Video', 3: 'IFrame', 4: 'Flickr', 5: 'Picasa', 6: 'Folder', 7: 'File Collection'}"
                                            default="0"
                                            requestUpdate="TRUE"/>
<f:debug>{type}</f:debug>
                <f:comment>Image configuration fields</f:comment>
                <flux:field.file name="original" label="Main image" displayCond="FIELD:type:=:1"
                                          required="TRUE"/>
            </flux:form.object>
        </flux:form.section>
    </flux:form.sheet>
 </flux:form>
</f:section>

displayCond无法工作。即使我从名为"type"的选择列表中选择了Image,输入字段也永远不会显示。调试语句的输出显示为“NULL”。

我如何在flux:form.object内部使用displayCond来控制字段显示?


我不确定,但可以尝试像这样:displayCond="FIELD:sectionName.objectName.type:=:1",因为您在问题描述中提到type在section->object内部。对于这个问题给你一个+1,如果它有效或者你找到了另一个解决方案,请不要忘记分享 ;) - Ghanshyam Gohel
FIELD:settings.items.item.type:=:1 对我不起作用。 - Hauke
2个回答

2

您正在使用 requestUpdate="TRUE"。这很好,这样您就可以使用以下内容:

<f:if condition="{type}==1">
 <flux:field.file .... />
</f:if>

<f:if condition="{type}==2">
 [...]
</f:if>
< p > <f:if> 不仅适用于预览或主要部分,您还可以在配置部分中使用它。 < /p >

0

注意:此方法不适用于TYPO3 7.6.x,仅适用于6.2.x。

我创建了这个最小化的FCE示例并且它可以工作。只要您在配置部分中,就无需通过section.object结构进行操作。

type在许多情况下是一个保留名称,并且不能说明属性行为。因此,我将其更改为mediatype

<div xmlns="http://www.w3.org/1999/xhtml" lang="en"
     xmlns:f="http://typo3.org/ns/TYPO3/Fluid/ViewHelpers"
     xmlns:v="http://typo3.org/ns/FluidTYPO3/Vhs/ViewHelpers"
     xmlns:flux="http://typo3.org/ns/FluidTYPO3/Flux/ViewHelpers">
    <f:layout name="Content" />

    <f:section name="Configuration">
        <flux:form id="example" label="displayCond example" enabled="1">
            <flux:form.section name="slides" label="slides">
                <flux:form.object name="slide" label="slide">


                    <flux:field.select name="mediatype" label="Media type"
                        items="{0: 'Please select', 1: 'Image', 2: 'Video', 3: 'IFrame', 4: 'Flickr', 5: 'Picasa', 6: 'Folder', 7: 'File Collection'}"
                        default="0"
                        requestUpdate="TRUE"/>

                    <flux:field.input name="title" 
                        label="Title" 
                        displayCond="FIELD:mediatype:=:1" />

                </flux:form.object>
            </flux:form.section>
        </flux:form>
    </f:section>
    <f:section name="Preview">
    </f:section>
    <f:section name="Main">
    </f:section>
</div>

希望这对你有用!

为什么这个被踩了?请尝试一下这个例子,看看它是否有效。 - The F
在T3 7.6上测试 - 没有成功。这肯定与form.object有关。将其删除 - 就可以了。 - Hauke
你是对的,Hauke。这对于7.6.x不起作用。请查看此Forge问题以获取更多信息。 - The F

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接