我已將Flexform添加到Textmedia內容元素。這很好。我怎樣才能在視圖中獲取表單數據?內容元素沒有控制器,並且{settings}
變量不包含Flexform數據。Extbase CE - 獲取Flexform數據
我很高興爲您提供幫助。
$ffContent = \TYPO3\CMS\Core\Utility\GeneralUtility::xml2array($xmlString);
這將XML標籤結構只是轉換到一個數組,它給你留下一個漂亮:
乾杯
我已將Flexform添加到Textmedia內容元素。這很好。我怎樣才能在視圖中獲取表單數據?內容元素沒有控制器,並且{settings}
變量不包含Flexform數據。Extbase CE - 獲取Flexform數據
我很高興爲您提供幫助。
$ffContent = \TYPO3\CMS\Core\Utility\GeneralUtility::xml2array($xmlString);
這將XML標籤結構只是轉換到一個數組,它給你留下一個漂亮:
乾杯
你可以簡單地使用TYPO3核心API一個柔性成型XML字符串轉換成數組複雜的數組來迭代。
爲了得到一個簡化的結構,而不全部牀單的柔性成型「膨脹」,定位等,Extbase提供自己FlexformService:
$flexformService = GeneralUtility::makeInstance('TYPO3\CMS\Extbase\Service\FlexFormService');
$ffContent = $flexformService->convertFlexFormContentToArray($xmlString);
如果從定位所需要的內容,你需要傳遞一個調整值爲$languagePointer
(第二個參數)或$valuePointer
(第三個)。
編輯:當你寫的,你不手邊有一個控制器,把上面的代碼之中,您可能希望創建一個視圖助手。該視圖助手可以分配操作作爲單獨的變量的結果,你可以訪問
{namespace me=MyVendor\MyExtension\ViewHelpers}
…
<me:decodeFlexform value="{object.pi_flexform}" as="ffValues">
{ffValues.myField}
</me:decodeFlexform>
大概也有一個已經在不同的視圖助手集合擴展(VHS和朋友)已經之一。
對於內容元素,可能很容易使用dataProcessor。我現在正在使用移動設備,明天早上將爲Flexform數據處理器添加代碼。
謝謝,我現在用一個數據處理器解決了這個問題,就像這個例子:https://github.com/benjaminkott/bootstrap_package/blob/master/Classes/DataProcessing/FlexFormProcessor.php –
這是一個好的版本!玩得開心。 –