5

我正在开发一个扩展,允许管理员将内容保存到数据库中。

而且我希望扩展的每个实例在数据库中都应该有它自己的 ID。有没有办法在扩展 php.ini 中获取 tt_content uid(我猜是扩展实例 ID)。

4

4 回答 4

12

您在数组中获取所有 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");
于 2012-05-04T11:54:06.513 回答
1

这是方法(在 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);
于 2019-02-13T05:29:22.133 回答
1

对于更新该答案并知道插件 uid 的效果,您可以调试\TYPO3\CMS\Core\Utility\DebugUtility::debug($this->configurationManager->getContentObject()->data['uid'], 'parameter');

如果未完成,则调试不显示,uid因为configurationManagercontentObject使用延迟加载。

这适用于 TYPO3 8.7 并经过测试

于 2019-06-28T13:56:57.733 回答
0

$contentId 是typo3后端的内容ID

$content_rec = $GLOBALS["TYPO3_DB"]->exec_SELECTgetrows('header,bodytext','tt_content','uid='.$contentId);
$this->markerArray['###content###'] = $content_rec[0]['bodytext'];
于 2013-12-02T08:10:18.673 回答