2016-09-16 78 views
1

我已將Flexform添加到Textmedia內容元素。這很好。我怎樣才能在視圖中獲取表單數據?內容元素沒有控制器,並且{settings}變量不包含Flexform數據。Extbase CE - 獲取Flexform數據

我很高興爲您提供幫助。

$ffContent = \TYPO3\CMS\Core\Utility\GeneralUtility::xml2array($xmlString); 

這將XML標籤結構只是轉換到一個數組,它給你留下一個漂亮:

乾杯

回答

3

你可以簡單地使用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和朋友)已經之一。

2

對於內容元素,可能很容易使用dataProcessor。我現在正在使用移動設備,明天早上將爲Flexform數據處理器添加代碼。

+1

謝謝,我現在用一個數據處理器解決了這個問題,就像這個例子:https://github.com/benjaminkott/bootstrap_package/blob/master/Classes/DataProcessing/FlexFormProcessor.php –

+0

這是一個好的版本!玩得開心。 –