TYPO3 7.6.12 在字符串上调用成员函数 getPage_noCheck()

TYPO3 7.6.12 Call to a member function getPage_noCheck() on string

我不知道为什么我的扩展会抛出这个错误。因为像 dd_googlesitemap 这样的其他扩展和我一样使用它,这个扩展不会抛出这个错误。

我的 $pageId 参数有什么问题:

/**
 * Creates a link to a single page
 *
 * @param   array   $pageId Page ID
 * @return  string  Full URL of the page including host name (escaped)
 */
protected function getPageLink($pageId) {
    $conf = array(
        'parameter' => $pageId,
        'returnLast' => 'url',
    );

    $link = htmlspecialchars($this->cObj->typoLink('', $conf));
    return GeneralUtility::locationHeaderUrl($link);
}

这是错误输出:

Call to a member function getPage_noCheck() on string 

它是 第 6364 行 上的方法 detectLinkTypeFromLinkParameter

为什么会出现此错误?

你可以像这样将你的 pageUid 转换为 int

$conf = array(
    'parameter' => (int)$pageId,
    'returnLast' => 'url',
);

出现此错误是因为 $GLOBAL['TSFE'] 在我尝试使用它时未初始化。初始化后它不再抛出错误并且运行良好。

更新: 对于那些仍在寻找此解决方案并仍在使用 typo3 7.6 的人: 搜索方法 initTSFE 在第 208 行定义的方法(这是初始化 "TSFE" 的方法)以及它所在的位置在 getPageLink 方法之前的第 94 行初始化 这里 link 到文件 https://ideone.com/f4TGMm