我正在尝试使用新字段扩展现有域模型,但无法弄清楚我做错了什么。我尝试了以下TYPO3 6.1和TYPO3 6.2(最新版本,Extension Builder git master分支)。
到目前为止,一切都按预期工作。我可以在TYPO3后端为“table1”记录创建记录并输入“title1”的属性
现在我想用新字段扩展扩展名“mytest1”。我必须使用新扩展来执行此操作,因此我执行以下操作:
我现在期望,我在TYPO3后端有2个字段用于记录“table1”。实际上,我只是在扩展名“mytest1”中创建了一个字段“title1”。
据我所知,ext_tables.php和“ext_typoscript_setup.txt”看起来都很好。 TCA由额外字段扩展,并且extbase记录类型似乎也可以。 “table1”也包含由“mytest2”ext_tables.sql添加的新字段。只是,TCA似乎没有加载。
当我尝试使用TYPO3 4.5和ExtensionBuilder时,一切都按预期工作。
我有什么遗失的吗?
答案 0 :(得分:1)
$tempColumns = array(
'title2' => array(
'exclude' => 0,
'label' => 'title2',
'config' => array(
'type' => 'input'
)
)
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('table1', $tempColumns, 1);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('table1', 'title2;;;;1-1-1');
这应该足以将字段添加到TCA中的现有表。你试过这个吗?
答案 1 :(得分:0)
当前版本的Extension Builder似乎创建了错误的ext_tables.php
当我如上所述进行扩展创建时,它会使用新字段和字段tx_extbase_type扩展TCA。到现在为止还挺好。 ext_tables.php中的最后一行是最重要的一行,其中调用了addToAllTCAtypes。
Extension Builder创建以下函数调用:
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('tx_mytest1_domain_model_table1', $GLOBALS['TCA']['tx_mytest1_domain_model_table1']['ctrl']['type'],'','after:' . $TCA['tx_mytest1_domain_model_table1']['ctrl']['label']);
最后一个参数($ postition)是错误的。它尝试在 $ TCA ['tx_test1_domain_model_table1'] ['ctrl'] ['label'] 中配置的值之后添加新的TCA配置,这实际上是空的(因为未在mytest1扩展中定义)。
如果此参数指向不存在的内容(例如“after:nonexistingfield”),则新的TCA配置完全忽略并且不会添加。
我用以下内容替换了addToAllTCAtypes调用:
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('tx_mytest1_domain_model_table1', $GLOBALS['TCA']['tx_mytest1_domain_model_table1']['ctrl']['type'],'','');
我刚刚将$ position参数留空了,这导致两个新字段(title2和tx_extbase_type)显示在后端的表单中(实际上在Extension Builder中创建了一个新的选项卡--div--在新字段的showitem配置中)。
您还可以将位置指向现有字段(例如“after:title1”),然后在title1字段后显示新字段tx_extbase_type。
我认为这是Extension Builder中的一个错误,会在伪造上提出问题。