在 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}" />
是否有更简洁的方法来在基于 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}" />