2016-10-11 37 views
3

我正在使用fluidcontent,我想在內容元素中渲染插件。因此,我創建了以下COA:TYPO3 - 將流體中的變量傳遞給cObject

form = COA 
form { 
    15 < tt_content.list.20.extname_form 
    15.settings.id = | 
} 

此對象在具有cOject viewhelper的流體模板中呈現。

<f:cObject typoscriptObjectPath="form" data="testId" /> 

渲染過程正常。

問題是我無法訪問COA對象內的數據變量。在表單模板中,變量settings.id的內容是|而不是testId

我試圖渲染帶有vhs viewhelper request.render的插件,但也有我傳遞變量的問題。

<v:render.request action="request" controller="Form" extensionName="ExtName" pluginName="Form" vendorName="VendorName" arguments="{_all}" /> 

回答

0

如果數據使用.current = 1選項stdWrap的定義字符串:

form = COA 
form { 
    15 < tt_content.list.20.extname_form 
    15.settings.id.current = 1 
} 

但你的「extname_form」應該使用stdWrap上的設置否則你應該使用「變量」:

form = COA 
form { 
    15 < tt_content.list.20.extname_form 
    15.variables.id = TEXT 
    15.variables.id.current = 1 
} 

實施例使用stdWrap的用於設置:

form = COA 
form { 
    15 < tt_content.list.20.extname_form 
    15.settings.id.current = 1 
} 

在你的控制器動作:

/** @var \TYPO3\CMS\Extbase\Service\TypoScriptService $typoScriptService */ 
    $typoScriptService = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Service\TypoScriptService::class); 
    $typoScriptSettings = $typoScriptService->convertTypoScriptArrayToPlainArray($this->settings); 
    $this->settings['id'] = $this->configurationManager->getContentObject()->stdWrap($typoScriptSettings['id'], $typoScriptSettings['id.']); 

現在你settings.id由stdWrap解析,應該包含您cObjectViewHelper數據。

+0

謝謝你的幫助。我嘗試了兩個版本,但我無法將該變量傳遞給表單的流體模板。 –

+0

你的'extname_form''擴展中可能有些東西取決於如何訪問變量。僅當「'''tt_content.list.20.extname_form'''是FLUID_TEMPLATE對象時,帶有」變量「的示例纔有效。在不知道擴展名的情況下,您必須解析控制器中的設置並將其分配給您的視圖。 –

+0

我無法讓它工作。另外在表單控制器中,我無法訪問這些變量。表單插件也是用流體模板實現的。如果我使用第一個版本,我會在模板中看到該變量。存在的問題是不採取變量內容。 –

0

只是一些幫助(也許)在流體的模板,你可以使用:

<f:debug>{_all}</f:debug> 

,所以你可以檢查大量的可用信息,否則您的控制器:

\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($yourVariable); 
4

還有另一種使用變量的全局註冊表。 TYPO3包含一個所謂的「LOAD REGISTER」,它意味着一個變量的靜態存儲。該VHS擴展包含ViewHelpers與該存儲交互:

https://fluidtypo3.org/viewhelpers/vhs/master/Variable/Register/GetViewHelper.html

使用set變種你可以添加你的變量,然後調用f:cObject也不管有多深的渲染裏面堆放你的下一個流體模板坐鎮,使用get變體檢索值。

如果您將內容元素與其他嵌套的內容元素(例如,在任何嵌套深度檢索或重新定義值。

注意:也可以通過使用https://docs.typo3.org/typo3cms/TyposcriptReference/ContentObjects/LoadRegister/Index.html來訪問TypoScript以及通過TYPO3執行的自定義PHP。所以總的來說,處理起來可能要簡單得多,而且肯定比嚴格傳遞參數更靈活。