我想將來自後端的內容存儲在另一個數據庫中。TYPO3將後端內容保存在另一個數據庫中
所以我們可以說我有這個在我的後端:
我如何保存的值(例如在圖片中的浮點值),在另一個數據庫?
我之所以需要這個功能,是因爲我有另一個數據庫,它正在用於一些動態內容加載到我的網站用PHP。
希望有人有一個想法,能不能幫我:)
我想將來自後端的內容存儲在另一個數據庫中。TYPO3將後端內容保存在另一個數據庫中
所以我們可以說我有這個在我的後端:
我如何保存的值(例如在圖片中的浮點值),在另一個數據庫?
我之所以需要這個功能,是因爲我有另一個數據庫,它正在用於一些動態內容加載到我的網站用PHP。
希望有人有一個想法,能不能幫我:)
有幾種方法可以實現這一點。我只是假設你想在TYPO3的tt_content
表和不同的數據庫甚至不同的存儲引擎(網絡服務,文件系統,...)中的某個外部表之間創建關係。
在這種情況下,您可以通過其他屬性擴展tt_content
表的TCA
,我們將其稱爲external_reference
。後端表單應該提供一個額外的選擇器字段,允許選擇外部數據源的實體。
以下示例假定您的擴展名爲my_extension
,必須將其調整爲實際命名。
您可以通過將以下配置到您的擴展文件夾中typo3conf/ext/my_extension/Configuration/TCA/Overrides/tt_content.php
這樣做:
<?php
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns(
'tt_content',
[
'external_reference' => [
'exclude' => 1,
'label' => 'External Source',
'config' => [
'type' => 'select',
'items' => [
['-- none --', 0]
],
'itemsProcFunc' => ExternalReferenceSelection::class . '->render',
'default' => 0,
]
],
]
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
'tt_content',
'external_reference'
);
然後,你必須實現選擇和從外部源,例如像檢索
<?php
class ExternalReferenceSelection
{
public function render(array $parameters)
{
$references = ExternalReferenceRepository::instance()->findAll();
foreach ($references as $reference) {
$parameters['items'][] = [
$reference->getTitle(),
$reference->getIdentifier()
];
}
}
}
爲了能夠堅持選擇的參考,你必須在typo3conf/ext/my_extension/ext_tables.sql
#
# Table structure for table 'tt_content'
#
CREATE TABLE tt_content (
external_reference int(11) unsigned DEFAULT '0' NOT NULL
);
數據庫架構更新由TYPO3調用數據庫分析以及延長tt_content
SQL模式安裝工具,或通過(重新)在擴展管理器中安裝擴展。
我會使用一個鉤子,與如果事情是在TYPO3後臺更改或我會用它觸發值更新國外數據庫調度程序任務/命令控制器,由CLI觸發並運行所有x分鐘並更改數據庫中的值。
還應該注意的是,您只能選擇在另一個數據庫中擁有完整的表格,但不能只是某些字段。 – pgampe
謝謝你的回答:)有人獲得了一些鏈接到一些「教程」呢?還有可能,將數據從db加載到TYPO3後端?因此,如果值在其他地方更改,它會自動更新後端 – Joggal