2015-05-01 4 views
3

В расширении extbase у меня есть объект FileReference. Он был создан с использованием extension_builder изначально. из модели:Дисплей Extbase FileReference с жидкостью

/** 
* apprenticeshipDocument 
* 
@var \TYPO3\CMS\Extbase\Domain\Model\FileReference 
*/ 
protected $apprenticeshipDocument = NULL; 

т.д.

В веб-интерфейсе, <f:debug>{institution.apprenticeshipDocument}</f:debug> дает мне это:

Extbase Var Dump

Первая вещь: originalResource отсутствует.

Second: При вызове {organization.apprenticeshipDocument.uidLocal} напрямую значение равно NULL! Хотя сказано, что он выше 450.

В-третьих: предположим, что мы могли бы получить uidLocal, что соответствует uid в sys_file.

googlable решение:

<f:link.page pageUid="{f:uri.image(src:450)}" target="_blank">Text</f:link.page> 

не указует на самом PDF-файл, но тонированный GIF в формате PDF. Все, что я хочу сделать, это указать путь к файлу (sys_file.identifier) в ссылке ... должен быть способ, не так ли?

EDIT: Решение обеспечивает Jost:

<f:if condition="{institution.apprenticeshipDocument}"> 
    <li> 
    <f:link.page pageUid="{institution.apprenticeshipDocument.originalResource.publicUrl}" target="_blank">Text</f:link.page> 
    </li> 
</f:if> 
+0

Возможно, связано с https://forge.typo3.org/issues/48965? Но я на 6.2.12, где патч, кажется, включен – Urs

+0

Ah только что нашел https://forum.typo3.org/index.php/t/198281/ будет смотреть, что – Urs

+0

Это тот! Опубликует ответ позже (надеюсь ...) – Urs

ответ

4

Файлы и файловые ссылки ведут себя немного по-другому в жидкости, чем обычно:

  1. Они ленивы загружены, поэтому originalResource (Extbase ссылка на файл) и originalFile (значения основного файла) - NULL перед первым доступом к ним. Но вы можете просто получить к ним доступ, как обычно.
  2. Нельзя получить значение uidLocal ссылки на файл extbase, поскольку для него нет геттера (с TYPO3 6.2.12 и 7.2).
  3. Чтобы получить URL файла, используйте его атрибут publicUrl или использовать ViewHelper v:link.typolink из EXT: VHS, как это:

    <v:link.typolink configuration="{parameter: 'file:{uid}'}> 
        Linktext 
    </v:link.typolink> 
    

    uid является идентификатор файла в этом случае.

  4. Многие свойства файлов (особенно метаданные-свойства) не сохраняются как обычные атрибуты объекта, а внутренне сохраняются в ассоциативный массив, а затем извлекаются с использованием волшебного геттера. Они также ленивы. Таким образом, они обычно не отображаются как отдельные свойства в переменных дампах и могут вообще не устанавливаться или NULL (как указано выше).