【问题标题】:Extbase CE - Get Flexform dataExtbase CE - 获取 Flexform 数据
【发布时间】:2017-01-24 15:15:37
【问题描述】:

我在 Textmedia 内容元素中添加了一个 Flexform。这很好用。如何在视图中获取表单数据?内容元素没有控制器,{settings} 变量不包含 Flexform 数据。

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

干杯

【问题讨论】:

    标签: typo3 extbase typo3-7.6.x


    【解决方案1】:

    您可以使用 TYPO3 Core 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 和朋友)之一。

    【讨论】:

      【解决方案2】:

      对于内容元素,使用 dataProcessor 可能很容易。我现在在移动设备上,明天早上将为 flexform dataProcessor 添加代码。

      【讨论】:

      猜你喜欢
      • 2017-06-24
      • 2016-12-16
      • 1970-01-01
      • 2014-12-31
      • 2017-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-30
      相关资源
      最近更新 更多