我正在开发一个扩展,允许管理员将内容保存到数据库中。
而且我希望扩展的每个实例在数据库中都应该有它自己的 ID。有没有办法在扩展 php.ini 中获取 tt_content uid(我猜是扩展实例 ID)。
您在数组中获取所有 tt_content 的数据:
$this->cObj->data
IE:
$uidOfCE = $this->cObj->data['uid'];
如果你使用 Extbase 当然你需要先获取内容对象,即:
$this->contentObj = $this->configurationManager->getContentObject();
debug($this->contentObj->data, "current tt_content's data");
这是方法(在 TYPO3 9.5.4 和 10.4.3 中测试)
获取控制器内的当前内容ID
$this->configurationManager->getContentObject()->data['uid'];
和
这将返回您可以直接呈现的整个HTML内容
$conf = [
'tables' => 'tt_content',
'source' => $uid, //uid of tt_content
'dontCheckPid' => 1
];
$html = $GLOBALS['TSFE']->cObj->cObjGetSingle('RECORDS', $conf);
对于更新该答案并知道插件 uid 的效果,您可以调试\TYPO3\CMS\Core\Utility\DebugUtility::debug($this->configurationManager->getContentObject()->data['uid'], 'parameter');
如果未完成,则调试不显示,uid
因为configurationManager
并contentObject
使用延迟加载。
这适用于 TYPO3 8.7 并经过测试
$contentId 是typo3后端的内容ID
$content_rec = $GLOBALS["TYPO3_DB"]->exec_SELECTgetrows('header,bodytext','tt_content','uid='.$contentId);
$this->markerArray['###content###'] = $content_rec[0]['bodytext'];