我已经向Textmedia Content元素添加了Flexform。这很好用。如何在视图中获取表单数据?content元素没有控制器,并且{settings}变量不包含Flexform数据。
我很高兴能得到每一个帮助。
干杯
发布于 2016-09-16 20:52:22
您可以使用TYPO3核心API简单地将Flexform XML字符串转换为数组:
$ffContent = \TYPO3\CMS\Core\Utility\GeneralUtility::xml2array($xmlString);这只会将XML标记结构转换为一个数组,这会给您留下一个相当复杂的数组来迭代。
为了得到一个简化的结构,而不是所有的Flexform“臃肿”的工作表,本地化等,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和friends)中已经有了一个。
发布于 2016-09-17 06:15:15
对于内容元素,使用dataProcessor可能比较容易。我现在在手机上,明天早上将为flexform dataProcessor添加代码。
https://stackoverflow.com/questions/39530692
复制相似问题