首页 文章

如何在Extbase中检索FAL对象的元数据

提问于
浏览
1

在我的扩展中,我阅读了文件夹和图像 . 但是在结果中总是缺少来自sys_file_metadata的元数据,我什么也没发现如何加载它 .

数据库条目在那里,所以文件被索引,一切似乎都没问题 . BE工作正常 .

这里有一些代码:

控制器操作:

$storageId = 1;
$storageRepository = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Resource\\StorageRepository');
$storage = $storageRepository->findByUid($storageId);
$singleFile = $storage->getFile('/user_upload/my_file.pdf');
$singleFile = true;
$this->view->assign('singleFile', $singleFile);

如果我做一个f:debug它会告诉我这个:

Extbase Variable Dump

TYPO3\CMS\Core\Resource\Fileprototypeobject
   metaDataLoaded => FALSE
   metaDataProperties => array(empty)
   indexingInProgress => FALSE
   updatedProperties => array(empty)
   indexerService => NULL
   properties => array(15 items)
   storage => TYPO3\CMS\Core\Resource\ResourceStorageprototypeobject
   identifier => '/user_upload/my_file.pdf' (24 chars)
   name => 'my_file.pdf' (11 chars)
   deleted => FALSE

正如您所看到的,有一个字段metaDataProperties和metaDataLoaded,所以它没有被加载 .

有人知道如何加载它吗?

2 回答

  • 5

    您可以尝试在流体中使用它

    {singleFile.properties.description}, {singleFile.properties.title} or {singleFile.properties.alternative}

    或者这个获得所有属性

    $singleFile->_getMetaData()

    这也可能有帮助 $singleFile->getProperty('description')

  • 0

    对于读取相关文件(由“媒体”扩展提供),一个解决方案将是以下代码 . 这是为了完成上述评论中的问题 .

    private function getRelatedFiles($fileId) {
        $items = array();
        $resSub = 'SELECT sys_file_reference.uid_local '.
            ' FROM sys_file_reference LEFT JOIN sys_file_metadata ON sys_file_reference.uid_foreign = sys_file_metadata.uid LEFT JOIN sys_file ON sys_file.uid = sys_file_metadata.file '.
            ' WHERE sys_file.uid = '.$fileId;
    
        $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('sys_file.identifier',
            'sys_file',
            'sys_file.uid IN ('.$resSub.')'
        );
    
        while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)){
            $items[] = $this->getDocumentStorage()->getFile($row['identifier']);
        }
    
        return $items;
    }
    

相关问题