【问题标题】:How to get translated FAL image in extbase (not in Fluid) in TYPO3?如何在 TYPO3 的 extbase(不在 Fluid 中)中获取翻译的 FAL 图像?
【发布时间】:2017-10-02 13:12:00
【问题描述】:

我正在尝试在 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;
}

【问题讨论】:

  • 你能发布你的代码吗?
  • @ThomasLöffler 我现在添加了代码,请检查我的问题。

标签: typo3 extbase typo3-7.6.x fal


【解决方案1】:

存在一个错误,即已翻译(复制翻译)内容的 FAL 记录 (sys_file_reference) 没有获得翻译的语言 id。 我为此做了一个错误修复:https://github.com/BenjaminBeck/bdm_bugfix_translatecopy - 也许这就是你的问题?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 2015-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多