<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<oembed><type>rich</type><version>1.0</version><provider_name>phorkie</provider_name><provider_url>https://p.cweiske.de/</provider_url><title>typo3 flux: Obtain File reference object to render video tag via f:media</title><author_name>Christian Weiske</author_name><cache_age>86400</cache_age><width>900</width><height>900</height><html>&lt;!-- embedding all files of https://p.cweiske.de/743 --&gt;
&lt;link rel="stylesheet" href="https://p.cweiske.de/css/embed.css"/&gt;
&lt;div class="phork" id="743"&gt;
    &lt;div class="phork-file"&gt;
 &lt;div class="phork-content"&gt;
  
&lt;div class="document"&gt;


&lt;p&gt;&lt;tt class="docutils literal"&gt;&amp;lt;f:media &lt;span class="pre"&gt;file=&amp;quot;{file}&amp;quot;&amp;gt;&lt;/span&gt;&lt;/tt&gt; wants a file object, one of:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;TYPO3CMSCoreResourceFile&lt;/li&gt;
&lt;li&gt;TYPO3CMSCoreResourceFileReference&lt;/li&gt;
&lt;li&gt;TYPO3CMSExtbaseDomainModelFileReference&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(see &lt;a class="reference external" href="https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/Fal/UsingFal/Frontend.html#the-imageviewhelper"&gt;https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/Fal/UsingFal/Frontend.html#the-imageviewhelper&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;You cannot use &lt;tt class="docutils literal"&gt;&amp;lt;v:content.resources.fal&amp;gt;&lt;/tt&gt;, because you'll get an exception then:&lt;/p&gt;
&lt;blockquote&gt;
The argument &amp;quot;file&amp;quot; was registered with type &amp;quot;object&amp;quot;, but is of type &amp;quot;array&amp;quot; in view helper &amp;quot;TYPO3CMSFluidViewHelpersMediaViewHelper&amp;quot;.&lt;/blockquote&gt;
&lt;p&gt;Solution: Use &lt;tt class="docutils literal"&gt;v:resource.record.fal&lt;/tt&gt; with the asObjects attribute (vhs 6.0.5)&lt;/p&gt;
&lt;p&gt;Search keywords:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;typo3 &amp;quot;flux&amp;quot; &amp;quot;TYPO3CMSCoreResourceFile&amp;quot; object&lt;/li&gt;
&lt;li&gt;typo3 f:media video flux&lt;/li&gt;
&lt;li&gt;typo3 fluid vhs f:media file example&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

 &lt;/div&gt;
 &lt;div class="phork-meta"&gt;
  &lt;a href="https://p.cweiske.de/743/rev-raw/e15b3bd9dc48ece6a8bb0d6ee61e96f071d407b4/README.rst" style="float: right"&gt;view raw source&lt;/a&gt;
  &lt;a href="https://p.cweiske.de/743#README.rst"&gt;README.rst&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
    &lt;div class="phork-file"&gt;
 &lt;div class="phork-content"&gt;
  &lt;style type="text/css"&gt;/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2014 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.xml .de1, .xml .de2 {font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;}
.xml  {font-family:monospace;}
.xml .imp {font-weight: bold; color: red;}
.xml li, .xml .li1 {color: #DDD;}
.xml .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}
.xml .es0 {color: #000099; font-weight: bold;}
.xml .br0 {color: #66cc66;}
.xml .sy0 {color: #66cc66;}
.xml .st0 {color: #ff0000;}
.xml .sc-1 {color: #808080; font-style: italic;}
.xml .sc0 {color: #00bbdd;}
.xml .sc1 {color: #ddbb00;}
.xml .sc2 {color: #339933;}
.xml .sc3 {color: #009900;}
.xml .re0 {color: #000066;}
.xml .re1 {color: #000000; font-weight: bold;}
.xml .re2 {color: #000000; font-weight: bold;}
.xml span.xtra { display:block; }
&lt;/style&gt;&lt;div class="code"&gt;&lt;table class="xml"&gt;&lt;tbody&gt;&lt;tr class="li1"&gt;&lt;td class="ln"&gt;&lt;pre class="de1"&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
&lt;/pre&gt;&lt;/td&gt;&lt;td class="de1"&gt;&lt;pre class="de1"&gt;&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span class="re0"&gt;version&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="re0"&gt;encoding&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;utf-8&amp;quot;&lt;/span&gt;&lt;span class="re2"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="re0"&gt;xmlns&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt; &lt;span class="re0"&gt;lang&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;en&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class="sc3"&gt; &amp;#160;&lt;span class="re0"&gt;xmlns:be&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;http://typo3.org/ns/TYPO3/CMS/Backend/ViewHelpers&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class="sc3"&gt; &amp;#160;&lt;span class="re0"&gt;xmlns:f&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;http://typo3.org/ns/TYPO3/Fluid/ViewHelpers&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class="sc3"&gt; &amp;#160;&lt;span class="re0"&gt;xmlns:flux&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;http://typo3.org/ns/FluidTYPO3/Flux/ViewHelpers&amp;quot;&lt;/span&gt;&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160;
&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;f:layout&lt;/span&gt; &lt;span class="re0"&gt;name&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;ContentElement&amp;quot;&lt;/span&gt; &lt;span class="re2"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160;
&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;f:section&lt;/span&gt; &lt;span class="re0"&gt;name&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;Configuration&amp;quot;&lt;/span&gt;&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;flux:form&lt;/span&gt; &lt;span class="re0"&gt;id&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;Video&amp;quot;&lt;/span&gt;&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160; &amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;flux:field.inline.fal&lt;/span&gt; &lt;span class="re0"&gt;name&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;settings.video&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class="sc3"&gt; &amp;#160; &amp;#160; &amp;#160;&lt;span class="re0"&gt;required&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span class="re0"&gt;maxItems&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span class="re0"&gt;minItems&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;0&amp;quot;&lt;/span&gt; &lt;span class="re0"&gt;collapseAll&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;1&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class="sc3"&gt; &amp;#160; &amp;#160; &amp;#160;&lt;span class="re0"&gt;allowedExtensions&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;mp4&amp;quot;&lt;/span&gt; &lt;span class="re2"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/flux:form&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/f:section&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160;
&amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;f:section&lt;/span&gt; &lt;span class="re0"&gt;name&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;Preview&amp;quot;&lt;/span&gt;&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160; &amp;#160; {v:content.resources.fal(field: 'settings.video', record: record) -&amp;gt; v:iterator.first() -&amp;gt; v:variable.set(name: 'video')}
&amp;#160; &amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;f:if&lt;/span&gt; &lt;span class="re0"&gt;condition&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;{video}&amp;quot;&lt;/span&gt;&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; Video: {video.identifier}
&amp;#160; &amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/f:if&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/f:section&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160;
&amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;f:section&lt;/span&gt; &lt;span class="re0"&gt;name&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;Main&amp;quot;&lt;/span&gt;&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160; &amp;#160; {v:resource.record.fal(table: 'tt_content', field: 'settings.video', record: record, asObjects: 1) -&amp;gt; v:iterator.first() -&amp;gt; v:variable.set(name: 'video')}
&amp;#160; &amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;f:if&lt;/span&gt; &lt;span class="re0"&gt;condition&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;{video}&amp;quot;&lt;/span&gt;&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;f:media&lt;/span&gt; &lt;span class="re0"&gt;file&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;{video}&amp;quot;&lt;/span&gt; &lt;span class="re0"&gt;additionalAttributes&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;{controls: 'controls'}&amp;quot;&lt;/span&gt;&lt;span class="re2"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160; &amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/f:if&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/f:section&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/html&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="phork-meta"&gt;
  &lt;a href="https://p.cweiske.de/743/rev-raw/e15b3bd9dc48ece6a8bb0d6ee61e96f071d407b4/Video.html" style="float: right"&gt;view raw source&lt;/a&gt;
  &lt;a href="https://p.cweiske.de/743#Video.html"&gt;Video.html&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</html></oembed>
