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
我不知道为什么我的扩展会抛出这个错误。因为像 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