Модификация 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( 0 => 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" ) ) ) ) ), 1 => 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. В связи с этим и возникает вопрос поставленный в начале поста. Поэтому прошу пнуть в сторону правильного решения проблемы.
|