Typo3 类型3 6.1/6.2-扩展现有域模型

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 6.1和TYPO3 6.2(最新版本,扩展生成器git master branch)尝试了以下内容

  • 使用扩展生成器创建新扩展(供应商:TEST,扩展键:mytest1)
  • 创建名为“table1”的新表
  • 为表1创建一个名为“title1”的新属性
  • 保存扩展名
  • 安装扩展插件
  • 到目前为止,一切正常。我可以在TYPO3后端为“table1”记录创建记录,并为“title1”输入属性

    现在我想用一个新字段扩展扩展扩展名“mytest1”。我必须使用一个新的扩展来完成此操作,因此我执行以下操作:

    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('tx_mytest1_domain_model_table1', $GLOBALS['TCA']['tx_mytest1_domain_model_table1']['ctrl']['type'],'','');
    
  • 使用扩展生成器创建另一个扩展(供应商:TEST,扩展键:mytest2)
  • 创建名为“table1”的新表
  • 在“扩展现有模型类”字段中,我输入类“\TEST\Mytest1\Domain\model\Table1”
  • 创建名为“title2”的新属性
  • 保存扩展名
  • 安装扩展插件
  • 我现在希望,对于记录“table1”,我在TYPO3后端有2个字段。实际上,我只是在扩展名“mytest1”中创建了一个字段“title1”

    就我所见,ext_tables.php和“ext_typoscript_setup.txt”看起来都不错。TCA由额外的字段扩展,extbase记录类型似乎也可以。“table1”还包含由“mytest2”ext_tables.sql添加的新字段。只是TCA好像没有加载

    当我对TYPO3 4.5和ExtensionBuilder进行同样的尝试时,一切都按预期进行

    我有什么遗漏吗

    $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上提交一个问题。

    谢谢您的回答。它为我指明了正确的方向(见下面我的答案/解释),并产生了要显示的新字段。