0

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

<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>

我需要一个条件来满足 2 if´s 在 PHP 中我需要休息一下吗?谢谢

4

3 回答 3

1

您可以使用 ViewHelpersv:iterator.intersectv:iterator.extract从扩展vhs. 这不是很优雅:

<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,这只需几行代码。

于 2016-05-03T22:29:21.783 回答
1

如果堆栈 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>
于 2016-05-04T15:47:39.800 回答
1

如果你只是想避免 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>
于 2016-05-08T16:45:54.390 回答