TYPO3: получить путь из ссылки на файл в Extbase

Я создал пользовательский элемент содержимого с помощью Fluid и Extbase (TYPO3 6.1), в котором вы можете определить изображение. В настройках изображения я могу установить img-ссылку, которая нацелена на файл.

В моем контроллере я могу получить доступ к этим данным с помощью

$this->configurationManager->getContentObject();

Но я просто получаю ссылку на файл для этого параметра и без пути. так:

file:1206

Я много гуглил и не нашел решения для доступа к пути. Есть ли у кого-нибудь решение или знает, может быть, функцию в диспетчере конфигураций или что-то еще? Я трачу часы на эту проблему...

Большое спасибо!


person Hayo    schedule 13.08.2013    source источник
comment
Возможно ли, что у вас включено расширение FAL (уровень абстракции файлов)?   -  person Michael    schedule 14.08.2013


Ответы (3)


У вас есть ссылка на файл FAL, уровень абстракции файла.

Прежде всего, если вы используете FlexForms в сочетании с ActionController (или любую реализацию AbstractController ) вы должны иметь доступ к свойству settings для вычисления значений FlexForm.

Чтобы вычислить sys_file_reference записей, вам следует обратиться к документам FAL на сайте typo3.org. (и раздел с постоянной ссылкой о файле и работа с папками).

В общем, вы должны иметь возможность вызывать getOriginalResource() для объекта \TYPO3\CMS\Extbase\Domain\Model\FileReference. Чтобы получить более конкретные примеры, обратитесь к ссылкам на документы или загляните в вики для примера обработки Ссылки на файлы.

Если вы хотите вычислить такую ​​ссылку с помощью гибких шаблонов, вы можете использовать аргумент treatIdAsReference для f:image:

<f:image src="{imageObj.uid}" width="150" height="100" treatIdAsReference="1" />

person Cedric Ziel    schedule 21.08.2013
comment
Вау здорово! Спасибо, что поделились своим ноу-хау! - person Hayo; 23.09.2013
comment
Я бы рекомендовал использовать предоставленное свойство image вместо разбора uid через атрибут src. Итак, <f:image image="{imageObj}" treatIdAsReference="TRUE" /> - person YeppThat'sMe; 13.03.2015

Если вам нужно получить изображение из FAL, используйте следующий помощник просмотра изображений

<f:image src="{object.image_field.uid}" alt="{object.image_field.originalResource.title}" width="640" height="291" treatIdAsReference="1" />

Если вам просто нужен URL-адрес изображения, используйте следующую строку

{object.image.originalResource.publicUrl}..

Ура.

person Vivek Parmar    schedule 12.06.2015

Он просит путь, а не образ. Это печатает путь в шаблонах жидкости:

{f:uri.image(src:'{object.uid}',treatIdAsReference:'1')}
person Christian Michael    schedule 28.10.2017
comment
Это то, о чем он просит, но не то, чего он на самом деле пытается достичь. Люди иногда такие. - person j4k3; 01.11.2017
comment
@ j4k3 Конечно ... я тоже. Но поиск в гугле тупой и просто ищет слова. Может быть, кто-то найдет эту страницу и ищет то, о чем он просит, и хочет добиться именно того, о чем он просит в заголовке ... как я, прежде чем я нашел ответ в другом месте ... чем нет необходимости искать в другом месте :-) - person Christian Michael; 02.11.2017