有几个示例可以编写自定义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()
方法中实现的逻辑,这会影响缓存的输出。render()
的缺点是它的性能。▸摘要/其他说明
renderStatic()
(性能)。 render()
)。 TYPO3Fluid\Fluid\Core\ViewHelper\AbstractTagBasedViewHelper
。 (请参阅:
render()
)[GitHub] 关于typo3 - render()和renderStatic()有什么区别?在TYPO3中编写ViewHelper时应该使用什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54531152/