I am developing an extension that allows admins to save stuff to the database.
And I want that each instance of the extension should have it's own Id in the database. Is there some way to get the tt_content uid (which I guess is the extension instance Id) in the extension php.
You fetch all tt_content's data in array:
$this->cObj->data
ie:
$uidOfCE = $this->cObj->data['uid'];
If you're using Extbase of course you need to get the content object first, ie:
$this->contentObj = $this->configurationManager->getContentObject();
debug($this->contentObj->data, "current tt_content's data");
$contentId is content id in typo3 backend
$content_rec = $GLOBALS["TYPO3_DB"]->exec_SELECTgetrows('header,bodytext','tt_content','uid='.$contentId);
$this->markerArray['###content###'] = $content_rec[0]['bodytext'];
Here is the way (Tested in TYPO3 9.5.4)
This will return whole HTML of content which you can render directly
$conf = [
'tables' => 'tt_content',
'source' => $uid, //uid of tt_content
'dontCheckPid' => 1
];
$html = $GLOBALS['TSFE']->cObj->cObjGetSingle('RECORDS', $conf);
For the effects of update that answer and know an plugin uid, you could debug \TYPO3\CMS\Core\Utility\DebugUtility::debug($this->configurationManager->getContentObject()->data['uid'], 'parameter');
If is not complete the debug does not show the uid
because configurationManager
and contentObject
use lazy loading.
This works and tested from TYPO3 8.7