Показать сообщение отдельно
Старый 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 вне форума   Ответить с цитированием