基于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>
答案 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}" />