在 typo3 流体页面和操作之间切换的简洁方式 link

Clean way to switch between typo3 fluid page and action link

是否有更简洁的方法来在基于 var 的 fluid 中切换页面或操作 link?

现在我使用了 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>

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

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

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

然后在您的模板中引用部分内容:

<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}" />