首页 文章

TYPO3 6.1 / 6.2 - 扩展现有的域模型

提问于
浏览
2

我正在尝试使用新字段扩展现有域模型,但无法弄清楚我做错了什么 . 我尝试了以下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 回答

  • 0
    $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

    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配置为 completely ignored 且未添加 .

    我用以下内容替换了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在showitem中创建了--div--新字段的配置) .

    您还可以将位置指向现有字段(例如“after:title1”),然后在title1字段后显示新字段tx_extbase_type .

    我相信这是Extension Builder中的一个错误,并会在伪造上提出问题 .

相关问题