Typo3:通量和显示条件

Posted

技术标签:

【中文标题】Typo3:通量和显示条件【英文标题】:Typo3: Flux & DisplayCond 【发布时间】:2016-10-29 22:13:25 【问题描述】:

我有以下通量模板:

<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 不工作。即使我从选择列表命名类型中选择图像,输入字段也不会显示。 调试语句的输出显示“NULL”

如何将 displayCond 与 Flux:form.object 中的字段一起使用?

【问题讨论】:

我不确定,但可以试试类似: displayCond="FIELD:sectionName.objectName.type:=:1" b'coz type inside of section->object 正如你在你的描述题。 +1 提问,如果它有效,或者您找到了另一个解决方案,请不要忘记分享;) FIELD:settings.items.item.type:=:1 对我不起作用。 【参考方案1】:

注意:这不适用于 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>

希望这对你有用!

【讨论】:

为什么这被否决了?请尝试该示例并查看它是否有效。 在 T3 7.6 上测试 - 没有成功。它肯定与 form.object 有关。删除它 - 就可以了。 你说得对,豪克。这不适用于 7.6.x。查看此伪造问题以获取更多信息。【参考方案2】:

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

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

<f:if condition="type==2">
 [...]
</f:if>

&lt;f:if&gt; 不仅适用于预览部分或主要部分。您也可以在配置部分使用它。

【讨论】:

以上是关于Typo3:通量和显示条件的主要内容,如果未能解决你的问题,请参考以下文章

使用typo3扩展通量9.0.1更新colPos

Typo3 6.2:FCE(通量)中的表记录

如何将 TYPO3 页面模板中定义的通量表单字段存储在数据库列中而不是弹性字段中?

Fluid Typo3 - 如何获取通过来自不同页面 uid 的通量定义的变量

所有流体含量 FCE 的概述

TYPO3 Fluid complex if 条件