TYPO3:配置 TCA 以使用现有 table
TYPO3: configure TCA to use existing table
我想在我的扩展程序中使用现有的 table。此 table 仅在 read-only 模式下使用。事实上,我的扩展只会使用两个字段:uid 和 title.
扩展构建器向此 table 添加了 tx_extbase_type 字段。我不需要此字段,因为我的扩展程序不会在此 table 中存储任何数据,并且它必须处理已存在于 table.
中的数据
所以问题是:如何配置 TCA 以使用此 table?
这里是 ext_tables.php 的块处理这个 table。 tx_extbase_type 字段的定义已被删除。
$tmp_myext_columns = array(
'title' => array(
'exclude' => 0,
'label' => 'LLL:EXT:myext/Resources/Private/Language/locallang_db.xlf:tx_myext_domain_model_targettable.title',
'config' => array(
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
),
),
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('tx_someext_domain_model_targettable',$tmp_myext_columns);
$GLOBALS['TCA']['tx_someext_domain_model_targettable']['types']['Tx_MyExt_TargetTable']['showitem'] = $TCA['tx_someext_domain_model_targettable']['types']['1']['showitem'];
$GLOBALS['TCA']['tx_someext_domain_model_targettable']['types']['Tx_MyExt_TargetTable']['showitem'] .= ',--div--;LLL:EXT:myext/Resources/Private/Language/locallang_db.xlf:tx_myext_domain_model_targettable,';
$GLOBALS['TCA']['tx_someext_domain_model_targettable']['types']['Tx_MyExt_TargetTable']['showitem'] .= 'title';
--> $GLOBALS['TCA']['tx_someext_domain_model_targettable']['columns'][$TCA['tx_someext_domain_model_targettable']['ctrl']['type']]['config']['items'][] = array('LLL:EXT:myext/Resources/Private/Language/locallang_db.xlf:tx_someext_domain_model_targettable.tx_extbase_type.Tx_MyExt_TargetTable','Tx_MyExt_TargetTable');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('tx_someext_domain_model_targettable', $GLOBALS['TCA']['tx_someext_domain_model_targettable']['ctrl']['type'],'','after:' . $TCA['tx_someext_domain_model_targettable']['ctrl']['label']);
我试图删除标记为 ---> 的行(包含 tx_extbase_type-字段)。在这种情况下 repository->findAll()
总是给我带有空字符串而不是真实标题的记录。虽然查询结果中记录的数量和它们的id是正确的!
我正在使用 TYPO3 CMS 6.2.19
提前致谢!
您错过了必须通过打字将模型映射到现有 table 的部分(我建议您将其放在 setup.txt 中):
config.tx_extbase.persistence.classes.[my_model_class_path] {
mapping {
tableName = [existing_extbase_table]
}
干杯,
奥利维尔
我想在我的扩展程序中使用现有的 table。此 table 仅在 read-only 模式下使用。事实上,我的扩展只会使用两个字段:uid 和 title.
扩展构建器向此 table 添加了 tx_extbase_type 字段。我不需要此字段,因为我的扩展程序不会在此 table 中存储任何数据,并且它必须处理已存在于 table.
所以问题是:如何配置 TCA 以使用此 table?
这里是 ext_tables.php 的块处理这个 table。 tx_extbase_type 字段的定义已被删除。
$tmp_myext_columns = array(
'title' => array(
'exclude' => 0,
'label' => 'LLL:EXT:myext/Resources/Private/Language/locallang_db.xlf:tx_myext_domain_model_targettable.title',
'config' => array(
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
),
),
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('tx_someext_domain_model_targettable',$tmp_myext_columns);
$GLOBALS['TCA']['tx_someext_domain_model_targettable']['types']['Tx_MyExt_TargetTable']['showitem'] = $TCA['tx_someext_domain_model_targettable']['types']['1']['showitem'];
$GLOBALS['TCA']['tx_someext_domain_model_targettable']['types']['Tx_MyExt_TargetTable']['showitem'] .= ',--div--;LLL:EXT:myext/Resources/Private/Language/locallang_db.xlf:tx_myext_domain_model_targettable,';
$GLOBALS['TCA']['tx_someext_domain_model_targettable']['types']['Tx_MyExt_TargetTable']['showitem'] .= 'title';
--> $GLOBALS['TCA']['tx_someext_domain_model_targettable']['columns'][$TCA['tx_someext_domain_model_targettable']['ctrl']['type']]['config']['items'][] = array('LLL:EXT:myext/Resources/Private/Language/locallang_db.xlf:tx_someext_domain_model_targettable.tx_extbase_type.Tx_MyExt_TargetTable','Tx_MyExt_TargetTable');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('tx_someext_domain_model_targettable', $GLOBALS['TCA']['tx_someext_domain_model_targettable']['ctrl']['type'],'','after:' . $TCA['tx_someext_domain_model_targettable']['ctrl']['label']);
我试图删除标记为 ---> 的行(包含 tx_extbase_type-字段)。在这种情况下 repository->findAll()
总是给我带有空字符串而不是真实标题的记录。虽然查询结果中记录的数量和它们的id是正确的!
我正在使用 TYPO3 CMS 6.2.19
提前致谢!
您错过了必须通过打字将模型映射到现有 table 的部分(我建议您将其放在 setup.txt 中):
config.tx_extbase.persistence.classes.[my_model_class_path] {
mapping {
tableName = [existing_extbase_table]
}
干杯, 奥利维尔