Project

General

Profile

Actions

Bug #66813

open

Persisting extbase FileReference does not work with default TCA configuration

Added by Philipp Kerling over 9 years ago. Updated about 1 month ago.

Status:
Under Review
Priority:
Should have
Category:
Extbase
Target version:
-
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?


Related issues 2 (1 open1 closed)

Related to TYPO3 Core - Feature #88833: Extend possibility to create FileReference in frontend with a given File objectUnder Review2019-07-24

Actions
Related to TYPO3 Core - Feature #90374: Add setOriginaFile / setFile setter to TYPO3\CMS\Extbase\Domain\Model\FileReferenceClosed2020-02-15

Actions
Actions

Also available in: Atom PDF