render()和renderStatic()之间有什么区别?在TYPO3中编写ViewHelper时应该使用什么
这里有几个编写自定义ViewHelper的示例和不同的操作方法。我已经看到了render()和renderStatic的示例(例如在中) 在这里有一个解释,但我不理解它,它没有让我清楚为什么有2个函数,以及应该在哪里使用什么 在不同的地方,突破性的变化()和零碎的信息使得这里很难得到明确的答案。该示例是否符合最新的最佳实践?▸ renderStatic()render()和renderStatic()之间有什么区别?在TYPO3中编写ViewHelper时应该使用什么,typo3,fluid,view-helpers,Typo3,Fluid,View Helpers,这里有几个编写自定义ViewHelper的示例和不同的操作方法。我已经看到了render()和renderStatic的示例(例如在中) 在这里有一个解释,但我不理解它,它没有让我清楚为什么有2个函数,以及应该在哪里使用什么 在不同的地方,突破性的变化()和零碎的信息使得这里很难得到明确的答案。该示例是否符合最新的最佳实践?▸ renderStatic() 首先,renderStatic()。这意味着,您无权访问实例属性,例如$This->tag,例如,当您的ViewHelper类是Abstra
首先,
renderStatic()。这意味着,您无权访问实例属性,例如$This->tag
,例如,当您的ViewHelper类是AbstractTagBasedViewWhelper
的子类时,这是必需的
renderStatic()
的另一个缺点是无法访问子节点。例如,在以下示例中,子节点是
:
<f:if condition="{variable}">
<f:then>
...
</f:then>
</f:if>
...
话虽如此,renderStatic()
具有最好的性能,因为它是从编译流体中调用的。因此,如果可能,应使用此方法
▸ render()
在某些情况下,这种方法是更好的选择,或者必须用于特定的用例(参见上面的解释)。未编译render()
方法中实现的逻辑,这会影响缓存的输出
render()
的缺点是它的性能
▸ 摘要/附加说明
- 如果可以,请使用
renderStatic()
(性能)
- 如果实现基于标记的ViewHelper(的子类
TYPO3Fluid\Fluid\Core\ViewHelper\AbstractTagBasedViewWheelper
)
- 如果需要读取子节点,请使用
render()
- 以流体附带的ViewHelper(例如TYPO3 v9 LTS)为例进行查看。
(请参阅:typo3/sysext/fluid/Classes/ViewHelpers/*
)[]
这是一个绝妙的答案!谢谢。@Michael,很高兴你在stackoverflow,希望你还记得。