我正在尝试使用新字段扩展现有域模型,但无法弄清楚我做错了什么 . 我尝试了以下TYPO3 6.1和TYPO3 6.2(最新版本,Extension Builder git master分支) .
-
使用扩展构建器创建新扩展(供应商:TEST,扩展密钥:mytest1)
-
创建一个名为"table1"的新表
-
为table1创建一个名为"title1"的新属性
-
保存扩展名
-
安装扩展程序
到目前为止,一切都按预期工作 . 我可以在TYPO3后端为“table1”记录创建记录并输入“title1”的属性
现在我想用新字段扩展扩展名“mytest1” . 我必须使用新扩展来执行此操作,因此我执行以下操作:
-
使用扩展构建器创建另一个扩展(供应商:TEST,扩展密钥:mytest2)
-
创建一个名为"table1"的新表
-
在"Extend existing model class"字段中输入类"\TEST\Mytest1\Domain\Model\Table1"
-
创建一个名为"title2"的新属性
-
保存扩展名
-
安装扩展程序
我现在期望,我在TYPO3后端有2个字段用于记录“table1” . 实际上,我只是在扩展名“mytest1”中创建了一个字段“title1” .
据我所知,ext_tables.php和“ext_typoscript_setup.txt”看起来都很好 . TCA由额外字段扩展,并且extbase记录类型似乎也可以 . “table1”也包含“mytest2”ext_tables.sql添加的新字段 . 只是,TCA似乎没有加载 .
当我尝试使用TYPO3 4.5和ExtensionBuilder时,一切都按预期工作 .
有什么我想念的吗?
2 回答
这应该足以将字段添加到TCA中的现有表 . 你试过这个吗?
Extension Builder的当前版本似乎创建了错误的ext_tables.php
当我如上所述进行扩展创建时,它会使用新字段和字段tx_extbase_type扩展TCA . 到现在为止还挺好 . ext_tables.php中的最后一行是最重要的一行,其中调用了addToAllTCAtypes .
Extension Builder创建以下函数调用:
最后一个参数($ postition)是错误的 . 它尝试在 $TCA['tx_test1_domain_model_table1']['ctrl']['label'] 中配置的值之后添加新的TCA配置,该值实际为空(因为未在mytest1扩展中定义) .
如果此参数指向不存在的内容(例如"after:nonexistingfield"),则新的TCA配置为 completely ignored 且未添加 .
我用以下内容替换了addToAllTCAtypes调用:
我刚刚将$ position参数留空了,这导致两个新字段(title2和tx_extbase_type)显示在后端的表单中(实际上是在一个新选项卡中,因为Extension Builder在showitem中创建了--div--新字段的配置) .
您还可以将位置指向现有字段(例如“after:title1”),然后在title1字段后显示新字段tx_extbase_type .
我相信这是Extension Builder中的一个错误,并会在伪造上提出问题 .