我正在尝试为 TYPO3 制作一个 extbase 扩展,以获取具有 mimetype image/... 的所有文件对象,该文件对象由typo3 中的任何内容、插件或流体引用。
但我不知道哪种方法是获取这些数据的最佳方式。我应该如何在我的扩展中创建一个模型,我应该如何创建正确的存储库?
如果我创建自定义查询,我不确定如何返回包含任何数据(如元数据)等的完整 FAL 对象。
希望有人可以帮助我找到正确的方法,也许有一个例子或其他东西。
多谢
我正在尝试为 TYPO3 制作一个 extbase 扩展,以获取具有 mimetype image/... 的所有文件对象,该文件对象由typo3 中的任何内容、插件或流体引用。
但我不知道哪种方法是获取这些数据的最佳方式。我应该如何在我的扩展中创建一个模型,我应该如何创建正确的存储库?
如果我创建自定义查询,我不确定如何返回包含任何数据(如元数据)等的完整 FAL 对象。
希望有人可以帮助我找到正确的方法,也许有一个例子或其他东西。
多谢
你可以这样做,细节在底部:
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 类型。