3 回答

TA貢獻1839條經驗 獲得超15個贊
我建議您將“執行 ViewHelper 的操作”的函數提取到一個單獨的方法中,并使其可以將此方法作為公共方法調用,并使其接收所需的 PHP 函數參數(例如,用戶電子郵件地址) *包裹在一個array $parameters
.
然后可以從 ViewHelper 和 TypoScript 調用此方法。TypoScript 類似于:
lib.myGravatarObject = USER lib.myGravatarObject.userFunc = MyVendor\ExtensionName\GravatarRenderer lib.myGravatarObject.userEmail = [email protected]
如果您命名的屬性與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 關注
- 148 瀏覽
添加回答
舉報