使用flux:field.inline.fal时如何获取fal对象而不是数组

时间:2018-06-25 18:49:25

标签: typo3 flux

任务似乎是不可能的!在我的助焊剂含量模板配置部分中,我定义了一个图像字段,如下所示:

<flux:field.inline.fal label="Image" name="images" maxItems="1" minItems="0" showThumbs="1"/>

在助焊剂含量模板的主要部分中,我确实调试了该字段的输出,如下所示:

<f:for each="{v:resource.record.fal(table: 'tt_content',field: 'images', uid: '{record.uid}')}" as="image" iteration="iterator">
  <f:debug>{image}</f:debug>
</f:for>

调试输出显示一个数组:-(但是我需要的是我在后端添加的图像的FAL对象。

我在Google上搜索了很多东西,并发现了一些2015年以来的较早的帖子。所有人都说不可能让fal object(!)不断变化。还是这样吗?你知道吗?

1 个答案:

答案 0 :(得分:0)

一种解决方案是创建自定义ViewHelper:

<?php

namespace Cmichael\Typo3projectprovider\ViewHelpers\Content;

/* FalViewHelper
* To get fal object by image uid (respectivly in flux templates)
* Usage example: <cm:content.fal referenceUid="{image.uid}">
* */

class FalViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper {

  /**
   * @var bool
   */
   protected $escapeOutput = false;

  /**
   * Initialize arguments.
   *
   */
   public function initializeArguments() {
      $this->registerArgument('referenceUid', 'integer', 'File reference uid', true, 0);
   }

  /**
   * Return file reference
   *
   * @return \TYPO3\CMS\Core\Resource\FileReference|null
   */
   public function render() {
      $referenceUid = $this->arguments['referenceUid'];
      $fileReferenceData = $GLOBALS['TSFE']->sys_page->checkRecord('sys_file_reference', $referenceUid);
      return $fileReferenceData ? \TYPO3\CMS\Core\Resource\ResourceFactory::getInstance()->getFileReferenceObject($referenceUid) : $referenceUid;
   }
}