2016-10-05 94 views
0

我想將來自後端的內容存儲在另一個數據庫中。TYPO3將後端內容保存在另一個數據庫中

所以我們可以說我有這個在我的後端:

Value in the Backend to be stored in a different DB

我如何保存的值(例如在圖片中的浮點值),在另一個數據庫?

我之所以需要這個功能,是因爲我有另一個數據庫,它正在用於一些動態內容加載到我的網站用PHP。

希望有人有一個想法,能不能幫我:)

回答

0

有幾種方法可以實現這一點。我只是假設你想在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模式安裝工具,或通過(重新)在擴展管理器中安裝擴展。

1

我會使用一個鉤子,與如果事情是在TYPO3後臺更改或我會用它觸發值更新國外數據庫調度程序任務/命令控制器,由CLI觸發並運行所有x分鐘並更改數據庫中的值。

+0

還應該注意的是,您只能選擇在另一個數據庫中擁有完整的表格,但不能只是某些字段。 – pgampe

+0

謝謝你的回答:)有人獲得了一些鏈接到一些「教程」呢?還有可能,將數據從db加載到TYPO3後端?因此,如果值在其他地方更改,它會自動更新後端 – Joggal

相關問題