Как получить объект Fal вместо массива при использовании flux: field.inline.fal - PullRequest
0 голосов
/ 25 июня 2018

Миссия кажется невозможной! В моем разделе конфигурации шаблона содержимого потока я определяю поле изображения следующим образом:

<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 того изображения, которое я добавил в бэкэнд.

Я много гуглил и нашел несколько старых постов с 2015 года. Все говорят, что невозможно получить объект fal (!) В потоке. Это все еще правда? Вы знаете какой-нибудь способ?

1 Ответ

0 голосов
/ 02 июля 2018

Одним из решений является создание пользовательского 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;
   }
}
...