清洁方式在typo3流体页面和动作链接之间切换

时间:2015-05-10 10:40:01

标签: typo3 fluid

基于var?

,是否有更简洁的方法在流体中的页面或动作链接之间切换?

现在我使用if then语句,但这会增加很多双码行。见例:

<f:if condition="{var}">
    <f:then>
        <f:link.page pageUid="{PageId}">

            // a lot of code lines

        </f:link.page>
    </f:then>
    <f:else>        
        <f:link.action pluginName="Name" controller="Cont">

            // the same a lot of code lines again

        </f:link.action>
    </f:else>
</f:if>

1 个答案:

答案 0 :(得分:0)

您可以将链接中的代码提取为部分

为此,首先创建一个部分模板。在Extbase扩展中,按照约定将它们放在 Resources / Private / Partials 中(您可以在模板对象上使用setPartialsRootPath()方法更改此设置,但通常不应该这样做是必要的。)

# Resources/Private/Partials/LinkContent.html
<!-- Insert your shared code lines here -->

然后在模板中引用partial:

<f:if condition="{var}">
    <f:then>
        <f:link.page pageUid="{PageId}">
            <f:render partial="LinkContent" />
        </f:link.page>
    </f:then>
    <f:else>        
        <f:link.action pluginName="Name" controller="Cont">
            <f:render partial="LinkContent" />
        </f:link.action>
    </f:else>
</f:if>

请注意,您必须将变量显式传递到父模板的部分中:

<!-- Assuming there's a variable "foo" in your template -->
<f:render partial="LinkContent" arguments="{foo: foo}" />

或者,您可以将整个范围导入部分:

<f:render partial="LinkContent" arguments="{_all}" />