Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community |
14.07.2009, 05:44 | #1 |
Senior Member
|
FlexForm и тип "select"
День добрый.
Я разрабатываю расширение (FE Plugin), в котором использую ФлексФормы и хочу получить элемент множественного выбора (на подобие того, который используется в tt_news для выбора типа новостей: LIST, LATEST, SINGLE и т.д.), причём элементы списка берутся из БД. Для этого использую такую структуру: Код:
<T3DataStructure> <meta> <langDisable>1</langDisable> <langChildren>0</langChildren> </meta> <ROOT> <type>array</type> <el> <clubServices> <TCEforms> <label>LLL:EXT:club_services/locallang_db.xml:pi1_flexform.services</label> <config> <type>select</type> <foreign_table>tx_clubservices_service</foreign_table> <foreign_table_where>AND tx_clubservices_service.pid=###STORAGE_PID### ORDER BY tx_clubservices_service.uid</foreign_table_where> <size>10</size> <minItems>0</minItems> <maxItems>100</maxItems> </config> </TCEforms> </clubServices> </el> </ROOT> </T3DataStructure> Что я делаю не так? Буду благодарен ответившим. |
14.07.2009, 12:48 | #2 |
Senior Member
Регистрация: 21.11.2007
Сообщений: 217
|
TCA опубликуйте
|
14.07.2009, 16:49 | #3 |
Senior Member
|
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'); ?> Возможно я не до конца всё понимаю (впервые разрабатываю расширение...), но, как я понял из документации, TCA нужен только для того, чтобы можно было создавать записи (records) на страницах (то есть, чтобы в 'Web->List' их можно было увидеть, создать, отредактировать, удалить и т.д.), но FlexForms не зависит от TCA, так как данные, записанные в них, хранятся не в отдельных таблицах, а прямо в 'tt_content' в поле 'pi_flexform' (и потому необходимо только создать правильный xml и добавить его, а также поле 'pi_flexform' в 'ext_tables.php'). Возможно, я что-то неправильно понял?.. |
14.07.2009, 20:06 | #4 |
Senior Member
|
Да, вы правильно поняли что TCA совершенно не причем.
Но если что-то вам нужно есть в tt_news, то может там и посмотреть как это сделано? Я например нашел дополнительно к вашему FF для поля clubServices вот такие параметры: <multiple>1</multiple> <selectedListStyle>width:150px</selectedListStyle> <itemListStyle>width:150px</itemListStyle> |
15.07.2009, 13:21 | #5 |
Senior Member
|
Эх, а проблема-то была совершенно в другом... Вот тут: <maxItems>100</maxItems>
Нету параметра "maxItems", есть только "maxitems" - с маленьким i. Потому и подставлялась в него дефолтовая единица, которая предотвращала построение второго списка |
Теги |
flexforms, select |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Тип страницы shotcut и SEO | surfman | TYPO3: SEO и статистика посещений | 4 | 07.09.2009 00:14 |
новый тип поля в FCE templavoila - как? | (:) | Общие вопросы | 5 | 04.03.2008 11:04 |
не могу поменять тип поля text -> rte вручную | demav | Общие вопросы | 2 | 29.01.2008 20:49 |
extension + flexform, проблема | ne0ie | Общие вопросы | 0 | 13.11.2007 15:17 |
FlexForm | GrishanAnton | Общие вопросы | 6 | 07.02.2006 13:34 |