Actions
Bug #66813
openPersisting extbase FileReference does not work with default TCA configuration
Start date:
2015-05-06
Due date:
% Done:
0%
Estimated time:
TYPO3 Version:
6.2
PHP Version:
Tags:
Complexity:
hard
Is Regression:
No
Sprint Focus:
Description
I try to programatically create a sys_file_reference in a field of a custom domain object in an extbase FE plugin.
This is the code I use:
/* @var $coverImage \TYPO3\CMS\Extbase\Domain\Model\FileReference */ $coverImage = $this->objectManager->get('TYPO3\CMS\Extbase\Domain\Model\FileReference'); $imageReference = $this->resourceFactory->createFileReferenceObject(array( 'uid_local' => $imageFile->getUid(), 'uid_foreign' => \uniqid('NEW_'), 'uid' => \uniqid('NEW_') )); $coverImage->setOriginalResource($imageReference); $object->setCoverImage($coverImage);
Sadly, this does not work, as the fields "tablenames" and "table_local" in the sys_file_reference will be empty.
The cover_image field is defined in the TCA as follows:
'cover_image' => array( 'exclude' => 1, 'label' => 'LLL:EXT:openimmo_import/Resources/Private/Language/locallang_db.xlf:tx_openimmoimport_domain_model_realestateobject.cover_image', 'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'coverImage', array( 'maxitems' => 1 ), $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] ), ),
As you can see, it uses the standard recommended function getFileFieldTCAConfig to generate the field definition.
Now it does work if you add "tablenames" and "table_local" to "foreign_match_fields", like this:
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'coverImage', array( 'maxitems' => 1, 'foreign_match_fields' => array( 'tablenames' => 'tx_openimmoimport_domain_model_realestateobject', 'table_local' => 'sys_file' ) ), $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] ),
This is also how the upload_example extension does it: https://github.com/helhum/upload_example/blob/master/Configuration/TCA/tx_uploadexample_domain_model_example.php#L136
Is this intended? If it is, why doesn't getFileFieldTCAConfig do it like this by default?
Actions