3 回答
TA贡献1839条经验 获得超15个赞
我建议您将“执行 ViewHelper 的操作”的函数提取到一个单独的方法中,并使其可以将此方法作为公共方法调用,并使其接收所需的 PHP 函数参数(例如,用户电子邮件地址) *包裹在一个array $parameters
.
然后可以从 ViewHelper 和 TypoScript 调用此方法。TypoScript 类似于:
lib.myGravatarObject = USER lib.myGravatarObject.userFunc = MyVendor\ExtensionName\GravatarRenderer lib.myGravatarObject.userEmail = foo@bar.com
如果您命名的属性与array $parameters
您的 ViewHelper 参数相同,您可以简单地传递$this->arguments
或$arguments
从 ViewHelper 内部传递(前者如果您正在实施render()
,后者如果您正在实施renderStatic()
)。它还使您在 TS 中使用与用于 ViewHelper 参数相同的属性名称变得更加透明。
TA贡献1804条经验 获得超3个赞
您可以使用带有最小模板的 FLUIDTEMPLATE cObject(例如通过模板属性):
10 = FLUIDTEMPLATE
10 {
template.cObject = TEXT
template.cObject.value(
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:mv="http://typo3.org/ns/MyVendor/BlogExample/ViewHelpers" data-namespace-typo3-fluid="true">
<mv:GravatarViewHelper />
)
}
这似乎是可能的。但正如 Bernd 已经问过的:为什么要那样做?
TA贡献1786条经验 获得超11个赞
你为什么要这样做?(请描述您的用例)
Viewhelpers 用于 FLUID 模板,那里有正确且匹配的上下文。
如果您想直接在 typoscript 中调用 PHP 函数,您可以选择userfunc
(手动)。但是您需要提供必要的上下文。
- 3 回答
- 0 关注
- 112 浏览
添加回答
举报