我正在尝试在 extbase 中获取翻译的 FAL 图像,但它为我提供了默认语言 FAL 图像。
我正在使用 TYPO3 7.6.16。它是一个多语言网站。我创建了 2 种网站语言 1) 英语,2) 西班牙语,默认一种是荷兰语。
目前我正在从存储库中获取数据,它在翻译版本和记录的原始版本中为我提供了具有相同 FAL 图像的模型。
如何使用 extbase(不在 Fluid 中)获取翻译后的 FAL 图像,因为我想将其返回到 JSON 响应?
这是代码:
控制器:
$posts = $this->postRepository->findByLanguage($langId);
foreach($posts as $post) {
$output[] = [
'uid' => $post->getUid(),
'title' => $post->getTitle(),
'image' => $post->getImage()->getOriginalResource()->getOriginalFile()->getPublicUrl()
];
}
header('Content-Type: application/json');
echo json_encode($output);
exit();
在这里,我得到默认语言 FAL 图像,而不是在线本地化$post->getImage()->getOriginalResource()->getOriginalFile()->getPublicUrl()
存储库:
/**
* @return array|\TYPO3\CMS\Extbase\Persistence\QueryResultInterface
*/
public function findByLanguage($langId, $postId = 0)
{
$query = $this->createQuery();
$query->getQuerySettings()->setRespectStoragePage(FALSE);
$query->getQuerySettings()->setRespectSysLanguage(TRUE);
$query->getQuerySettings()->setLanguageUid($langId);
if ($postId) {
$query->matching(
$query->equals('uid' , $postId)
);
return $query->execute()->getFirst();
}
return $query->execute();
}
模型:
/**
* title
*
* @var string
*/
protected $title;
/**
* image
*
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
protected $image = null;
/**
* @return bool $title
*/
public function getTitle() {
return $this->title;
}
/**
* @param string $title
* @return void
*/
public function setTitle($title) {
$this->title = $title;
}
/**
* @return \TYPO3\CMS\Extbase\Domain\Model\FileReference $image
*/
public function getImage() {
return $this->image;
}
/**
* @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $image
* @return void
*/
public function setImage(\TYPO3\CMS\Extbase\Domain\Model\FileReference $image) {
$this->image = $image;
}