TCA генерировался kickstarter-ом:
tca.php:
Код:
<?php
if (!defined ('TYPO3_MODE')) die ('Access denied.');
$TCA['tx_clubservices_service'] = array (
'ctrl' => $TCA['tx_clubservices_service']['ctrl'],
'interface' => array (
'showRecordFieldList' => 'sys_language_uid,l10n_parent,l10n_diffsource,hidden,title'
),
'feInterface' => $TCA['tx_clubservices_service']['feInterface'],
'columns' => array (
'sys_language_uid' => array (
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xml:LGL.language',
'config' => array (
'type' => 'select',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => array(
array('LLL:EXT:lang/locallang_general.xml:LGL.allLanguages', -1),
array('LLL:EXT:lang/locallang_general.xml:LGL.default_value', 0)
)
)
),
'l10n_parent' => array (
'displayCond' => 'FIELD:sys_language_uid:>:0',
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xml:LGL.l18n_parent',
'config' => array (
'type' => 'select',
'items' => array (
array('', 0),
),
'foreign_table' => 'tx_clubservices_service',
'foreign_table_where' => 'AND tx_clubservices_service.pid=###CURRENT_PID### AND tx_clubservices_service.sys_language_uid IN (-1,0)',
)
),
'l10n_diffsource' => array (
'config' => array (
'type' => 'passthrough'
)
),
'hidden' => array (
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xml:LGL.hidden',
'config' => array (
'type' => 'check',
'default' => '0'
)
),
'title' => array (
'exclude' => 0,
'label' => 'LLL:EXT:club_services/locallang_db.xml:tx_clubservices_service.title',
'config' => array (
'type' => 'input',
'size' => '30',
'eval' => 'required,trim',
)
),
),
'types' => array (
'0' => array('showitem' => 'sys_language_uid;;;;1-1-1, l10n_parent, l10n_diffsource, hidden;;1, title;;;;2-2-2')
),
'palettes' => array (
'1' => array('showitem' => '')
)
);
?>
ext_tables.php:
Код:
<?php
if (!defined ('TYPO3_MODE')) {
die ('Access denied.');
}
t3lib_extMgm::allowTableOnStandardPages('tx_clubservices_service');
$TCA['tx_clubservices_service'] = array (
'ctrl' => array (
'title' => 'LLL:EXT:club_services/locallang_db.xml:tx_clubservices_service',
'label' => 'title',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'languageField' => 'sys_language_uid',
'transOrigPointerField' => 'l10n_parent',
'transOrigDiffSourceField' => 'l10n_diffsource',
'default_sortby' => 'ORDER BY crdate',
'delete' => 'deleted',
'enablecolumns' => array (
'disabled' => 'hidden',
),
'dynamicConfigFile' => t3lib_extMgm::extPath($_EXTKEY).'tca.php',
'iconfile' => t3lib_extMgm::extRelPath($_EXTKEY).'icon_tx_clubservices_service.gif',
),
);
t3lib_div::loadTCA('tt_content');
$TCA['tt_content']['types']['list']['subtypes_excludelist'][$_EXTKEY.'_pi1']='layout,select_key,pages';
$TCA['tt_content']['types']['list']['subtypes_addlist'][$_EXTKEY.'_pi1']='pi_flexform';
t3lib_extMgm::addPiFlexFormValue($_EXTKEY . '_pi1', 'FILE:EXT:' . $_EXTKEY . '/pi1/flexform_ds.xml');
t3lib_extMgm::addPlugin(array(
'LLL:EXT:club_services/locallang_db.xml:tt_content.list_type_pi1',
$_EXTKEY . '_pi1',
t3lib_extMgm::extRelPath($_EXTKEY) . 'ext_icon.gif'
),'list_type');
if (TYPO3_MODE == 'BE') {
$TBE_MODULES_EXT['xMOD_db_new_content_el']['addElClasses']['tx_clubservices_pi1_wizicon'] = t3lib_extMgm::extPath($_EXTKEY).'pi1/class.tx_clubservices_pi1_wizicon.php';
}
t3lib_extMgm::addStaticFile($_EXTKEY,'static/club_services/', 'Club Services');
?>
Собственно, данные для списка берутся из таблицы "tx_clubservices_service".
Возможно я не до конца всё понимаю (впервые разрабатываю расширение...), но, как я понял из документации, TCA нужен только для того, чтобы можно было создавать записи (records) на страницах (то есть, чтобы в 'Web->List' их можно было увидеть, создать, отредактировать, удалить и т.д.), но FlexForms не зависит от TCA, так как данные, записанные в них, хранятся не в отдельных таблицах, а прямо в 'tt_content' в поле 'pi_flexform' (и потому необходимо только создать правильный xml и добавить его, а также поле 'pi_flexform' в 'ext_tables.php').
Возможно, я что-то неправильно понял?..