如何获取TYPO3中文件引用对象的uid?

时间:2018-07-09 12:24:55

标签: typo3 typo3-7.6.x typo3-8.x typo3-extensions fal

我正在尝试通过此代码$f = $resourceFactory->getFileObject($uid);获取文件,但是问题是uid是文件引用对象中的受保护字段,如下所示,因此我无法获取{ {1}}和uid显然也不起作用。

那么我如何获取文件引用(FAL)的uid

getUid()

2 个答案:

答案 0 :(得分:1)

假设您有一个TYPO3\CMS\Extbase\Domain\Model\FileReference的实例,则可以使用getOriginalResource()来获取包装好的TYPO3\CMS\Core\Resource\FileReference。如果需要引用的文件,则可以使用getOriginalFile()。因此,作为链式调用:

$file = $fileReference->getOriginalResource()->getOriginalFile();

请注意,您不必全部使用ResourceFactory,这是内部处理的。

答案 1 :(得分:0)

从我这里来工作。

您可以使用自定义查询来查找或获取文件引用uid。

在控制器中:

$uid = $yourObject->getUid();
$fileReference = $this->yourRepository->getFileReferenceObject($uid);

在存储库中

public function getFileRefernceHeaderLogo($uid){
        $query = $this->createQuery();
        $queryString = "SELECT *
                            FROM sys_file_reference
                                WHERE deleted = 0 
                                        AND hidden = 0 
                                            AND tablenames='your_table_name'
                                                AND fieldname='your_field_name'
                                                    AND uid_foreign =".$uid;

        $query->statement($queryString);
        return $res = $query->execute(true);            
    }

在控制器中

$fileRefUid = $fileReference[0]['uid'];

在这里您可以获取文件引用表的uid。这是一个漫长的过程。

您还可以为getFileObject.like获取sys_file表uid,

$sys_file_uid = $fileReference[0]['uid_local'];