我试图为TYPO3制作一个extbase扩展来获取具有mimetype image / ...的alle文件对象,该文件对象由typo3中的任何内容,插件或流体引用。
但我不知道哪种方法可以获取这些数据。我应该如何在我的扩展中创建模型以及如何创建正确的存储库?
如果我创建自定义查询,我不知道如何返回包含任何数据(如元数据)等的完整FAL对象。
希望有人能帮助我找到正确的方法,也许还有一个例子。
非常感谢
答案 0 :(得分:3)
你可以这样做,细节在底部:
mime_type
以image/
开头的文件。您可能需要注意两件事:
mime_type
需要是最新的。检查FAL调度程序索引任务。如何获取所有文件引用:
首先,构建自己的空文件引用类:
namespace Vendor/Extkey/Domain/Model;
class FileReference extends \TYPO3\CMS\Extbase\Domain\Model\FileReference {}
确保在TypoScript中将其配置为序列化到表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()
获取所有非隐藏和未删除的文件引用。
如何检查每个引用文件的MIME类型:
您可以通过调用
获取每个引用的MIME类型$fileReference->getOriginalResource()->getMimeType()
这应该自动从存储中获取原始文件并读取其MIME类型。