Typo3 类型3 6.1/6.2-扩展现有域模型
我试图用一个新的领域扩展一个现有的领域模型,但我不知道我做错了什么。我用TYPO3 6.1和TYPO3 6.2(最新版本,扩展生成器git master branch)尝试了以下内容Typo3 类型3 6.1/6.2-扩展现有域模型,typo3,extbase,Typo3,Extbase,我试图用一个新的领域扩展一个现有的领域模型,但我不知道我做错了什么。我用TYPO3 6.1和TYPO3 6.2(最新版本,扩展生成器git master branch)尝试了以下内容 使用扩展生成器创建新扩展(供应商:TEST,扩展键:mytest1) 创建名为“table1”的新表 为表1创建一个名为“title1”的新属性 保存扩展名 安装扩展插件 到目前为止,一切正常。我可以在TYPO3后端为“table1”记录创建记录,并为“title1”输入属性 现在我想用一个新字段扩展扩展扩展名“m
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('tx_mytest1_domain_model_table1', $GLOBALS['TCA']['tx_mytest1_domain_model_table1']['ctrl']['type'],'','');
$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中的现有表中。您尝试过这个吗?当前版本的Extension Builder似乎创建了错误的ext\u tables.php 当我如上所述创建扩展时,它使用新字段和字段tx_extbase_类型扩展TCA。到目前为止,一切顺利。ext_tables.php中的最后一行是最重要的一行,在这里调用addToAllTCAtypes 扩展生成器创建以下函数调用:
\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']);
最后一个参数(即$position)错误。它尝试在$TCA['tx\u test1\u domain\u model\u table1']['ctrl']['label']中配置的值之后添加新的TCA配置,该值实际上为空(因为在mytest1扩展中未定义)
如果此参数指向不存在的内容(例如“after:nonexistingfield”),则新的TCA配置将被完全忽略且未添加
我将AddToAlltCateges调用替换为以下内容:
\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)在后端的表单中显示(实际上是在扩展生成器为新字段在showitem配置中创建--div--时的新选项卡中)
您还可以将位置指向现有字段(例如“之后:标题1”),然后在标题1字段之后显示新字段tx_extbase_类型
我相信这是Extension Builder中的一个错误,将在forge上提交一个问题。谢谢您的回答。它为我指明了正确的方向(见下面我的答案/解释),并产生了要显示的新字段。