Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Обсуждение общих технических вопросов > Общие вопросы

Ответ
 
Опции темы Опции просмотра
Старый 16.01.2008, 13:14   #1
reva2
Senior Member
 
Аватар для reva2
 
Регистрация: 31.08.2007
Адрес: Ростов-на-Дону
Сообщений: 206
По умолчанию Модификация TCA при помощи Dynaflex

Уважаемые коллеги, просветите пожалуйста, позволяет ли данное расширение работать с обычными полями, или он предназначено только для работы с полями типа flex.
Допустим есть вот такая табличка сконфигурированная в TCA:
PHP код:
$TCA["tx_revaproductcatalog_category"] = array (
    
"ctrl" => array (
        
'title'     => 'LLL:EXT:reva_product_catalog/locallang_db.xml:tx_revaproductcatalog_category',        
        
'label'     => 'name',    
        
'tstamp'    => 'tstamp',
        
'crdate'    => 'crdate',
        
'cruser_id' => 'cruser_id',
        
'sortby' => 'sorting',    
        
'delete' => 'deleted',    
        
'enablecolumns' => array (        
            
'disabled' => 'hidden',
        ),
        
'dynamicConfigFile' => t3lib_extMgm::extPath($_EXTKEY).'tca.php',
        
'iconfile'          => t3lib_extMgm::extRelPath($_EXTKEY).'icon_tx_revaproductcatalog_category.gif',
    ),
    
"feInterface" => array (
        
"fe_admin_fieldList" => "hidden, name, icon, parent_category, description",
    )
    
"interface" => array (
        
"showRecordFieldList" => "hidden,name,icon,parent_category,description"
    
),
    
"columns" => array (
        
'hidden' => array (        
            
'exclude' => 1,
            
'label'   => 'LLL:EXT:lang/locallang_general.xml:LGL.hidden',
            
'config'  => array (
                
'type'    => 'check',
                
'default' => '0'
            
)
        ),
        
"name" => Array (        
            
"exclude" => 0,        
            
"label" => "LLL:EXT:reva_product_catalog/locallang_db.xml:tx_revaproductcatalog_category.name",        
            
"config" => Array (
                
"type" => "input",    
                
"size" => "48",    
                
"max" => "150",    
                
"eval" => "required,trim",
            )
        ),
        
"icon" => Array (        
            
"exclude" => 1,        
            
"label" => "LLL:EXT:reva_product_catalog/locallang_db.xml:tx_revaproductcatalog_category.icon",        
            
"config" => Array (
                
"type" => "group",
                
"internal_type" => "file",
                
"allowed" => "gif,png,jpeg,jpg",    
                
"max_size" => 500,    
                
"uploadfolder" => "uploads/tx_revaproductcatalog",
                
"show_thumbs" => 1,    
                
"size" => 1,    
                
"minitems" => 0,
                
"maxitems" => 1,
            )
        ),
        
"parent_category" => Array (        
            
"exclude" => 1,        
            
"label" => "LLL:EXT:reva_product_catalog/locallang_db.xml:tx_revaproductcatalog_category.parent_category",        
            
"config" => Array (
                
"type" => "select",    
                
"foreign_table" => "tx_revaproductcatalog_category",    
                
"foreign_table_where" => "ORDER BY tx_revaproductcatalog_category.uid",    
                
"size" => 5,    
                
"minitems" => 0,
                
"maxitems" => 10,
            )
        ),
        
"description" => Array (        
            
"exclude" => 1,        
            
"label" => "LLL:EXT:reva_product_catalog/locallang_db.xml:tx_revaproductcatalog_category.description",        
            
"config" => Array (
                
"type" => "text",
                
"cols" => "30",
                
"rows" => "5",
            )
        ),
    ),
    
"types" => array (
        
"0" => array("showitem" => "hidden;;1;;1-1-1, name, icon, parent_category, description;;;richtext[cut|copy|paste|formatblock|textcolor|bold|italic|underline|left|center|right|orderedlist|unorderedlist|outdent|indent|link|table|image|line|chMode]:rte_transform[mode=ts_css|imgpath=uploads/tx_revaproductcatalog/rte/], category_properties")
    ),
    
"palettes" => array (
        
"1" => array("showitem" => "")
    )
); 
Как бы ничего необычного, все стандартно. И вот допустим мы хотим к этой конфигурации добавить поле типа "input". Прочитав документацию к расширению Dynflex приходим к выводу что для этого необходимо выполнить несколько шагов.
1) создать класс в котором конфигурируется $DCA массив для нашей таблицы tx_revaproductcatlog_catagory. Для это в файл с именем class.user_df_productCategory.php помещам такое определение класса user_df_productCategory:
PHP код:
class user_df_productCategory
{
        var 
$DCA = array(
            
=> array(
                
"path" => "tx_revaproductcatalog_category/columns",
                
"modifications" => array(
                    array(
                        
"method" => "add",
                        
"type" => "field",
                        
"field_config" => array(
                            
"name" => "category_properties",
                            
"title" => "LLL:EXT:reva_product_catalog/locallang_db.xml:tx_revaproductcatalog_category_properties",
                            
"config" => array(
                                
"type" => "input",
                                
"default" => "Test"
                            
)
                        )
                    )
                )
            ),
            
=> array(
                
"path" => "tx_revaproductcatalog_category/types/0/showitem",
                
"parseXml" => false,
                
"modifications" => array(
                    array(
                        
"method" => "add",
                        
"type" => "append",
                        
"config" => array(
                            
"text" => ", category_properties"
                        
)
                    )
                ) 
            )
        );    

2) Вторым этапом необходимо зарегистрировать наш класс в расширении Dynaflex для нашей таблицы tx_revaproductcatalog_category. Делаем это при помощи размещения в файле ext_localconf.php следующей строки кода:
PHP код:
$GLOBALS['T3_VAR']['ext']['dynaflex']['tx_revaproductcatalog_category'][] = "EXT:reva_product_catalog:class.user_df_productCategory.php:user_df_productCategory" 
Теперь все как бы должно работать, т.е. при редактировании записи из таблицы tx_revaproductcatalog_category к тем полям которые уже были описаны изначально в TCA должно добавиться еще одно поле. Но почему-то не выходит, хотя по идеи все как бы должны быть правильно, поскольку сначало мы создаем новое поле, а затем добавляем его в описание types. В связи с этим и возникает вопрос поставленный в начале поста. Поэтому прошу пнуть в сторону правильного решения проблемы.
reva2 вне форума   Ответить с цитированием
Старый 16.01.2008, 20:55   #2
void
Senior Member
 
Аватар для void
 
Регистрация: 14.03.2006
Адрес: Russia, Penza
Сообщений: 1,504
Отправить сообщение для void с помощью ICQ
По умолчанию

Судя по коду dynaflex, оно XCLASS-ит только flex поля.
Опишите задачу... Что нужно в итоге получить?
__________________
TYPO3 FAQ
void вне форума   Ответить с цитированием
Старый 17.01.2008, 14:54   #3
Pavel Antonov
Senior Member
 
Аватар для Pavel Antonov
 
Регистрация: 01.10.2004
Адрес: Россия, Москва
Сообщений: 1,204
Отправить сообщение для Pavel Antonov с помощью ICQ
По умолчанию

Тоже интересовался этой проблемой... по-моему только flex. Проблему, по-моему, в которую уперлись разработчики - физическое управление БД - добавление, удаление полей, связей.

Частично на физическом уровне это решается в kb_shop, но только для определенных таблиц в соответствии с идеологией данного расширения (аттрибуты, значение атрибутов и т.д.)
__________________
Павел Антонов
Rich Media Development Ltd.
Блог: http://codeline.richmd.ru/
Pavel Antonov вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Редактирование из FE при помощи tm_contentaccess margol Общие вопросы 3 09.11.2007 20:45
как получить содержиное ячейки в таблице при помощи select? nitrogen14 Общие вопросы 4 15.08.2007 16:11


Часовой пояс GMT +4, время: 13:40.


Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot

Хостинг и техническая поддержка: TYPO3 Лаборатория