我正在尝试为TYPO3制作一个extbase扩展,以获取具有mimetype image / ...的alle文件对象,该文件对象由typo3中的任何内容,插件或流体引用 .
但我不知道哪种方法可以获得这些数据 . 我应该如何在我的扩展中创建模型,我应该如何创建正确的存储库?
如果我创建自定义查询,我不知道如何返回包含任何数据(如元数据)等的完整FAL对象 .
希望有人可以帮助我找到正确的方法,也许有一个例子或者什么 .
非常感谢
你可以这样做,细节在底部:
获取所有文件引用 .
浏览它们,为每个文件检索引用的文件,并仅保留 mime_type 字段以 image/ 开头的文件 .
mime_type
image/
您可能需要注意两件事:
字段 mime_type 需要是最新的 . 检查FAL调度程序索引任务 .
表现 . 根据您拥有的文件数量,使用JOIN的自定义SQL语句执行此操作可能要快得多 . 但是,如果性能有问题,你应该这样做 .
How to get all file references:
首先,构建自己的空文件引用类:
namespace Vendor/Extkey/Domain/Model; class FileReference extends \TYPO3\CMS\Extbase\Domain\Model\FileReference {}
确保在TypoScript中将其配置为序列化到表 sys_file_reference :
sys_file_reference
config.tx_extbase.persistence { classes { Vendor\Extkey\Domain\Model\FileReference { mapping { tableName = sys_file_reference } } } }
添加引用的存储库:
namespace Vendor/Extkey/Domain/Repository; class FileReferenceRepository extends \TYPO3\CMS\Extbase\Persistence\Repository { public function initializeObject() { /** @var \TYPO3\CMS\Extbase\Persistence\Generic\QuerySettingsInterface */ $defaultQuerySettings = $this->objectManager->get('TYPO3\\CMS\\Extbase\\Persistence\\Generic\\QuerySettingsInterface'); $defaultQuerySettings->setRespectStoragePage(FALSE); $this->setDefaultQuerySettings($defaultQuerySettings); } }
引用类可以为空,但存储库需要它才能正常工作 . 确保添加默认查询设置以忽略页面ID,因此通过调用 $fileReferenceRepository->findAll() 可以获得所有非隐藏和未删除的文件引用 .
$fileReferenceRepository->findAll()
How to check the MIME-type of each referenced file:
您可以通过调用获取每个引用的MIME类型
$fileReference->getOriginalResource()->getMimeType()
这应该自动从存储中获取原始文件并读取其MIME类型 .
1 回答
你可以这样做,细节在底部:
获取所有文件引用 .
浏览它们,为每个文件检索引用的文件,并仅保留
mime_type
字段以image/
开头的文件 .您可能需要注意两件事:
字段
mime_type
需要是最新的 . 检查FAL调度程序索引任务 .表现 . 根据您拥有的文件数量,使用JOIN的自定义SQL语句执行此操作可能要快得多 . 但是,如果性能有问题,你应该这样做 .
How to get all file references:
首先,构建自己的空文件引用类:
确保在TypoScript中将其配置为序列化到表
sys_file_reference
:添加引用的存储库:
引用类可以为空,但存储库需要它才能正常工作 . 确保添加默认查询设置以忽略页面ID,因此通过调用
$fileReferenceRepository->findAll()
可以获得所有非隐藏和未删除的文件引用 .How to check the MIME-type of each referenced file:
您可以通过调用获取每个引用的MIME类型
这应该自动从存储中获取原始文件并读取其MIME类型 .