【发布时间】:2021-08-02 17:05:17
【问题描述】:
使用 TYPO3 9.5,我们能够以这种方式从调度程序类中生成 Typolink:
$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
$contentRenderer = $objectManager->get(\TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer::class);
$command = $this->linkCommand($uid, 0);
$uri = $contentRenderer->typoLink_URL($command);
return $uri;
对于 TYPO3 v10,当通过 Cronjob 调用时,相同的代码不再工作。
从后端手动运行任务时,此代码运行良好,并根据页面 uid 生成 URL。但是通过 Cronjob 运行时,会产生如下输出:
The parsedUri "http:///www/sites/webXXXX/html/typo3/sysext/core/bin/typo3" appears to be malformed
我尝试以多种方式生成链接,但它们都以相同的错误消息结束。我不确定 Cronjob 在这里尝试什么,因为上面的 parsedUri 看起来完全错误。
有人遇到过与 Cronjobs 和 TYPO3 v10 类似的问题吗?这个服务器是相关的,还是我可以通过 PHP 修复的东西?我真的不知道这是什么原因。
【问题讨论】:
-
刚刚检查了您在 TYPO3
10.4.12中的代码,它按预期工作 - 生成页面记录的有效 URL,因为您没有向我们展示您的linkCommand()方法声明我从 @ 复制了一个987654321@ -
另外,测试this answer - 第一个样本在
10.x中的调度程序任务中也能正常工作 -
@biesior 第二个答案在使用简单的 UID 生成链接时效果很好,谢谢。但有些链接也看起来像
t3://page?uid=500#5996,而且该功能似乎只适用于普通 uid。 -
确实
t3://链接可以使用typolink 转换为普通链接。这意味着您需要调试,为什么您的不起作用。请告诉我你的整个linkCommand()方法声明。并且告诉你,你使用的是哪个版本的 TYPO3。 -
TYPO3 版本是 10.4.13,linkCommand() 函数与您在第一个链接示例中看到的基本相同,除了语言参数。但我也尝试使用
TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder。同样的问题,不适用于 Cronjob。问题是某些链接需要有一个锚点,否则我只会从t3://链接中提取uid并保持原样。
标签: php cron typo3 typo3-9.x typo3-10.x