TYPO3:配置TCA使用现有表

时间:2016-04-13 21:17:12

标签: model typo3 extbase typo3-6.2.x

我想在扩展程序中使用现有表。该表仅用于只读模式。实际上,我的扩展程序只会使用两个字段: uid title
扩展构建器将 tx_extbase_type 字段添加到此表中。我不需要这个字段,因为我的扩展不会在这个表中存储任何数据,它必须处理表中已存在的数据。

所以问题是:我如何配置TCA来使用这个表?

以下是处理此表的 ext_tables.php 块。 tx_extbase_type -field的定义已被删除。

$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 -field)。在这种情况下,repository->findAll()总是为我提供空字符串而不是真实标题的记录。虽然查询结果中的记录数及其ID是正确的!

我正在使用TYPO3 CMS 6.2.19

提前致谢!

1 个答案:

答案 0 :(得分:2)

您错过了必须通过typoscript将模型映射到现有表格的部分(我建议您将其放在setup.txt中):

config.tx_extbase.persistence.classes.[my_model_class_path] {
mapping {
    tableName = [existing_extbase_table]
}

干杯, 奥利弗