[TYPO3-dev] File reference using Extbase/Fluid/FAL and backwards compatibility

Dennis Luemkemann dennis.luemkemann at gmx.de
Tue Nov 12 21:59:59 CET 2013


Hello Frans,

thanks for your answer.

> Can you post the code of your model here? Looks like you got something wrong there?

<?php
namespace TYPO3\DlCsbesucher\Domain\Model;

class Visit extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {

	/**
	 * The logo
	 *
	 * @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
	 * @lazy
	 */
	protected $image1;

	/**
	 * Returns the image1
	 *
	 * @return \TYPO3\CMS\Extbase\Domain\Model\FileReference
	 */
	public function getImage1() {
		if (!is_object($this->image1)){
    		return null;
 		} elseif ($this->image1 instanceof \TYPO3\CMS\Extbase\Persistence\Generic\LazyLoadingProxy) {
    		$this->image1->_loadRealInstance();
  		}
  		return $this->image1->getOriginalResource();
	}

	/**
	 * Sets the image1
	 *
	 * @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $image1
	 * @return void
	 */
	public function setImage1($image1) {
		$this->image1 = $image1;
	}

	/** other simple properties skipped... */
}
?>

> If you do a <f:debug>{imageProperty}</f:debug> shows it a string/int or a object.

it shows a FileReference object, the correct one from sys_file_reference, which contains the uid_local to the desired image in sys_file:

TYPO3\CMS\Core\Resource\FileReference prototype object
   propertiesOfFileReference => array(32 items)
   uidOfFileReference => NULL
   name => NULL
   fileRepository => TYPO3\CMS\Core\Resource\FileRepository singleton object
      objectType => 'TYPO3\CMS\Core\Resource\File' (28 chars)
      table => 'sys_file' (8 chars)
      indexerService => NULL
      factory => TYPO3\CMS\Core\Resource\ResourceFactory singleton object
         storageInstances => array(2 items)
         collectionInstances => array(empty)
         fileInstances => array(2 items)
            319 => TYPO3\CMS\Core\Resource\File prototype object
               indexed => TRUE
               indexable => TRUE
               metaDataProperties => array(25 items)
               indexingInProgress => FALSE
               updatedProperties => array(empty)
               properties => array(13 items)
               storage => TYPO3\CMS\Core\Resource\ResourceStorage prototype object see above
               identifier => '/furniture/willkommen/Flaggen/saudi_arabien.gif' (47 chars)
               name => 'saudi_arabien.gif' (17 chars)
               deleted => FALSE
            6 => TYPO3\CMS\Core\Resource\File prototype object
               indexed => TRUE
               indexable => TRUE
               metaDataProperties => array(25 items)
               indexingInProgress => FALSE
               updatedProperties => array(empty)
               properties => array(13 items)
               storage => TYPO3\CMS\Core\Resource\ResourceStorage prototype object see above
               identifier => '/typo3/sysext/beuser/ext_icon.gif' (33 chars)
               name => 'ext_icon.gif' (12 chars)
               deleted => FALSE
         fileReferenceInstances => array(1 item)
            6 => TYPO3\CMS\Core\Resource\FileReference prototype object see above
         localDriverStorageCache => NULL
         signalSlotDispatcher => TYPO3\CMS\Extbase\SignalSlot\Dispatcher singleton object see above
      typeField => '' (0 chars)
      type => '' (0 chars)
   originalFile => TYPO3\CMS\Core\Resource\File prototype object see above
   mergedProperties => array(empty)

I'm surprised that there are two fileInstances: 319 is the uid to the correct file in sys_file, but 6 is only the uid of the entry in sys_file_reference. In the output I'm getting the image with uid 6 shown.

In the template, I'm using
<f:image src="{visit.image1.uid}" alt="logo" />

Best regards
Dennis


>> I started writing an extension using Extbase/Fluid on my 6.2 test
>> installation. I'm using a reference to an image in my model. After
>> initially building my ext with extension_builder (with type "Image*"
>> instead of "File reference*" for the image property), I then manually
>> changed the code following the instructions in the Typo3 Wiki (
>> http://wiki.typo3.org/File_Abstraction_Layer#Usage_in_Extbase_.28in_progress.29)
>> to get image relation in FAL working.
>> 
>> Result: In the backend I can associate an image, the sys_file_reference
>> table gets updated properly, BUT in my tx…domain_model_myclass table, the
>> value for the image is always 1 and when I render the image in the fluid
>> template, I get image uid 1 shown, not my image, which is referenced in the
>> sys_file_reference table. I'm wondering: Did I miss something or has
>> something changed in 6.2 since the Wiki page was written?
>> 
>> Also, there seem to be two different ways now for referencing and
>> rendering images in the legacy file management system and FAL. Can I write
>> one extension that will work on 4.5 LTS and 6.2 LTS or do I have to write
>> two separate exts?
>> 
>> Thanks
>> Dennis



More information about the TYPO3-dev mailing list