TYPO3 在另一个数据库中保存后端内容
TYPO3 saving Backend content in another database
我想将我后端的内容存储在另一个数据库中。
假设我的后端有这个:
如何将值(例如图片中的浮点值)保存到另一个数据库中?
我需要这个的原因是,因为我有另一个数据库,用于通过 PHP.
加载到我的网站上的一些动态内容
希望有人有想法可以帮助我:)
我会使用一个钩子来更新外部数据库的值,如果 TYPO3 后端发生了某些变化就会触发这个值,或者我会使用一个由 CLI 触发并运行所有 x 分钟的调度程序任务/命令控制器并更改数据库中的值。
有几种方法可以实现。我只是假设你想在 TYPO3 的 tt_content
table 和不同数据库甚至不同存储引擎(网络服务,文件系统,. ..).
在那种情况下,您可以将 tt_content
table 的 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
中扩展 tt_content
的 SQL 架构
#
# Table structure for table 'tt_content'
#
CREATE TABLE tt_content (
external_reference int(11) unsigned DEFAULT '0' NOT NULL
);
通过调用 TYPO3 安装工具中的数据库分析器或通过(重新)安装扩展管理器中的扩展来更新数据库架构。
我想将我后端的内容存储在另一个数据库中。
假设我的后端有这个:
如何将值(例如图片中的浮点值)保存到另一个数据库中?
我需要这个的原因是,因为我有另一个数据库,用于通过 PHP.
加载到我的网站上的一些动态内容希望有人有想法可以帮助我:)
我会使用一个钩子来更新外部数据库的值,如果 TYPO3 后端发生了某些变化就会触发这个值,或者我会使用一个由 CLI 触发并运行所有 x 分钟的调度程序任务/命令控制器并更改数据库中的值。
有几种方法可以实现。我只是假设你想在 TYPO3 的 tt_content
table 和不同数据库甚至不同存储引擎(网络服务,文件系统,. ..).
在那种情况下,您可以将 tt_content
table 的 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
tt_content
的 SQL 架构
#
# Table structure for table 'tt_content'
#
CREATE TABLE tt_content (
external_reference int(11) unsigned DEFAULT '0' NOT NULL
);
通过调用 TYPO3 安装工具中的数据库分析器或通过(重新)安装扩展管理器中的扩展来更新数据库架构。