管理者がデータベースにデータを保存できるようにする拡張機能を開発しています。
また、拡張機能の各インスタンスには、データベース内に独自のIDが必要です。拡張PHPでtt_contentuid(拡張インスタンスIDだと思います)を取得する方法はありますか?
配列内のすべてのtt_contentのデータをフェッチします。
$this->cObj->data
すなわち:
$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
これは動作し、TYPO38.7からテストされています
$contentIdはtypo3バックエンドのコンテンツIDです
$content_rec = $GLOBALS["TYPO3_DB"]->exec_SELECTgetrows('header,bodytext','tt_content','uid='.$contentId);
$this->markerArray['###content###'] = $content_rec[0]['bodytext'];