Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
render()和renderStatic()之间有什么区别?在TYPO3中编写ViewHelper时应该使用什么_Typo3_Fluid_View Helpers - Fatal编程技术网

render()和renderStatic()之间有什么区别?在TYPO3中编写ViewHelper时应该使用什么

render()和renderStatic()之间有什么区别?在TYPO3中编写ViewHelper时应该使用什么,typo3,fluid,view-helpers,Typo3,Fluid,View Helpers,这里有几个编写自定义ViewHelper的示例和不同的操作方法。我已经看到了render()和renderStatic的示例(例如在中) 在这里有一个解释,但我不理解它,它没有让我清楚为什么有2个函数,以及应该在哪里使用什么 在不同的地方,突破性的变化()和零碎的信息使得这里很难得到明确的答案。该示例是否符合最新的最佳实践?▸ renderStatic() 首先,renderStatic()。这意味着,您无权访问实例属性,例如$This->tag,例如,当您的ViewHelper类是Abstra

这里有几个编写自定义ViewHelper的示例和不同的操作方法。我已经看到了render()和renderStatic的示例(例如在中)

在这里有一个解释,但我不理解它,它没有让我清楚为什么有2个函数,以及应该在哪里使用什么

在不同的地方,突破性的变化()和零碎的信息使得这里很难得到明确的答案。该示例是否符合最新的最佳实践?

renderStatic()
首先,
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,希望你还记得。