首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Extbase CE -获取Flexform数据

Extbase CE -获取Flexform数据
EN

Stack Overflow用户
提问于 2016-09-16 19:44:15
回答 2查看 1.7K关注 0票数 1

我已经向Textmedia Content元素添加了Flexform。这很好用。如何在视图中获取表单数据?content元素没有控制器,并且{settings}变量不包含Flexform数据。

我很高兴能得到每一个帮助。

干杯

EN

回答 2

Stack Overflow用户

发布于 2016-09-16 20:52:22

您可以使用TYPO3核心API简单地将Flexform XML字符串转换为数组:

代码语言:javascript
复制
$ffContent = \TYPO3\CMS\Core\Utility\GeneralUtility::xml2array($xmlString);

这只会将XML标记结构转换为一个数组,这会给您留下一个相当复杂的数组来迭代。

为了得到一个简化的结构,而不是所有的Flexform“臃肿”的工作表,本地化等,Extbase提供了自己的FlexformService:

代码语言:javascript
复制
$flexformService = GeneralUtility::makeInstance('TYPO3\CMS\Extbase\Service\FlexFormService');
$ffContent = $flexformService->convertFlexFormContentToArray($xmlString);

如果您需要来自本地化的内容,则需要为$languagePointer (第二个参数)或$valuePointer (第三个参数)传递一个调整后的值。

编辑:正如您所写的,您手头没有一个控制器可以将上面的代码放入其中,您可能希望为此创建一个视图帮助器。视图帮助器可以将操作结果指定为您可以访问的单独变量

代码语言:javascript
复制
{namespace me=MyVendor\MyExtension\ViewHelpers}
…
<me:decodeFlexform value="{object.pi_flexform}" as="ffValues">
  {ffValues.myField}
</me:decodeFlexform>

可能在不同的视图助手集合扩展(vhs和friends)中已经有了一个。

票数 4
EN

Stack Overflow用户

发布于 2016-09-17 06:15:15

对于内容元素,使用dataProcessor可能比较容易。我现在在手机上,明天早上将为flexform dataProcessor添加代码。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39530692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档