Показать сообщение отдельно
Старый 14.07.2009, 16:49   #3
Fearless Goblin
Senior Member
 
Аватар для Fearless Goblin
 
Регистрация: 18.07.2006
Сообщений: 108
Отправить сообщение для Fearless Goblin с помощью ICQ Отправить сообщение для Fearless Goblin с помощью Skype™
По умолчанию

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').
Возможно, я что-то неправильно понял?..
Fearless Goblin вне форума   Ответить с цитированием