gpt4 book ai didi

typo3 - render()和renderStatic()有什么区别,TYPO3写ViewHelper应该用什么

转载 作者:行者123 更新时间:2023-12-02 07:18:22 26 4
gpt4 key购买 nike

有几个编写自定义 ViewHelper 的示例以及不同的做事方式。我见过使用 render() 和使用 renderStatic 的示例(例如在 Developing a Custom ViewHelper 中)。

24 Fluid Tips有一个解释,但我不明白,它并没有让我清楚为什么有 2 个函数以及应该在哪里使用什么。

断断续续的变化(Render method arguments on ViewHelpers deprecated)和各个地方的碎片化信息,在这里很难得到明确的答案。是在Developing a Custom ViewHelper中的例子最新和最佳实践?

最佳答案

renderStatic()
首先,renderStatic()静态 PHP 方法。这意味着,您无权访问实例属性,例如 $this->tag ,例如,当您的 ViewHelper 类是 AbstractTagBasedViewHelper 的子类时,这是必需的.
renderStatic()的另一个缺点是你不能访问子节点。例如,一个子节点是 <f:then>在以下示例中:

<f:if condition="{variable}">
<f:then>
...
</f:then>
</f:if>

话虽如此, renderStatic()具有最佳性能,因为它是从已编译的 Fluid 中调用的。因此,应尽可能使用此方法。

渲染()
在某些情况下,此方法是更好的选择,或者必须用于特定用例(请参阅上面的解释)。在 render() 中实现的逻辑方法未编译,这对缓存的输出有影响。
render()的缺点是它的性能。

摘要/附加说明
  • 使用 renderStatic() ,如果可以的话(性能)。
  • 使用 render() , 如果你实现了一个 TagBased-ViewHelper (子类TYPO3Fluid\Fluid\Core\ViewHelper\AbstractTagBasedViewHelper )。
  • 使用 render() , 如果您需要读取子节点。
  • 查看 Fluid 附带的 ViewHelper(例如 TYPO3 v9 LTS)作为示例。
    (见:typo3/sysext/fluid/Classes/ViewHelpers/*)[GitHub ]
  • 关于typo3 - render()和renderStatic()有什么区别,TYPO3写ViewHelper应该用什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54531152/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com