繁体   English   中英

TYPO3 FLUID两个条件合二为一?

[英]TYPO3 FLUID two condition in one foreach?

我有两个条件。 如何清除内容? 不需要两个内容:

<f:for each="{newsItem.categories}" as="category">
    <f:if condition="{category.uid} == 2">
        <f:if condition="{newsItem.logo}">
            Logo 1
        </f:if>
    </f:if>
    <f:if condition="{category.uid} == 3">
        <f:if condition="{newsItem.logo}">
            Logo 1
        </f:if>
    </f:if>
</f:for>

如果在PHP中我休息一下,我需要2个条件。 谢谢

您可以使用扩展名vhs的ViewHelpers v:iterator.intersectv:iterator.extract 这不是很优雅:

<f:if condition="{newsItem.categories -> v:iterator.extract(key: 'uid') -> iterator.intersect(b: '{0: 2, 1: 3}')}">
    <f:if condition="{newsItem.logo}">
        Logo 1
    </f:if>
</f:if>

另外,您可以只编写自己的ViewHelper,而这只是几行代码。

如果堆栈Viewhelper,也可以使用vhs:

<v:if stack="{0: '{category.uid}', 1: '==', 2: '2', 3: 'OR', 4: '{category.uid}', 5: '==', 6: '3'}">
    <f:then>
        <f:if condition="{newsItem.logo}">
            Logo 1
        </f:if>
    </f:then>
</v:if>

如果只想避免2个类似的HTML块,则可以使用f:render和f:section:

<f:for each="{newsItem.categories}" as="category">
<f:if condition="{category.uid} == 2">
    <f:render section="logo" arguments="{newsItem:newsItem}" />
</f:if>
<f:if condition="{category.uid} == 3">
    <f:render section="logo" arguments="{newsItem:newsItem}" />
</f:if>
</f:for>

<f:section name="logo">
    <f:if condition="{newsItem.logo}">
            Logo 1
    </f:if>
</f:section>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM