自定义 TCA 字段在前端不可见

Custom TCA Fields not visible in Frontend

我创建了一个后端扩展并扩展了 fe_user 4 个附加字段。

我正在使用 TYPO3 7.6.13。

4个自定义字段在后端列表中可见,但不是前端不可用的字段。

是否有任何 "special" 列表需要扩展我的字段?我的TCA配置如下。

ExtensionManagementUtility::addTCAcolumns('fe_users', $temporaryColumns);
ExtensionManagementUtility::addToAllTCAtypes('fe_users', 'field1', '', 'after:image');
ExtensionManagementUtility::addToAllTCAtypes('fe_users', 'field2', '', 'after:field1');
ExtensionManagementUtility::addToAllTCAtypes('fe_users', 'field3', '', 'after:field2');
ExtensionManagementUtility::addToAllTCAtypes('fe_users', 'field4', '', 'after:field3');
ExtensionManagementUtility::addToAllTCAtypes(
    'fe_users',
    'field1, field2, field3, field4'
);

还有更多待办事项还是我 运行 遇到了某种错误?

您必须将字段添加到模型中。在您的域中,您将拥有一个 fe_user 存储库,它将映射到真实的 fe_user table.

如果您将字段添加到 fe_user,您还必须将它们添加到您的 fe_user 模型。

你想过吗?

要扩展现有的 extbase 模型,需要执行以下步骤:

  • 将字段添加到 ext_tables.sql
  • 中的数据库
  • 将字段添加到 Configuration/TCA/Overrides/table_name 中的 TCA。php

这应该足以使用 TYPO3 后端中的字段。 对于前端渲染,您还需要两个步骤:

  • 扩展 Extbase 模型(属性、Getter 和 Setter)
  • 告诉 extbase 使用带有 TypoScript 的新模型:config.tx_extbase.persistence.classes

据我了解,您完成了前 3 个步骤,但可能错过了最后一个步骤?

完整示例(ext_typoscript_setup.txt,普通的 TypoScript 文件也应该有效):

config.tx_extbase {
    persistence {
        classes {
            TYPO3\CMS\Extbase\Domain\Model\FrontendUser {
                subclasses {
                    0 = YourVendor\YourextNamespace\Domain\Model\YourClass
                }
             }
        }
    }
} 

这对于许多表来说应该足够了,但是 fe_users 使用 recordType 字段。要配置它,您需要以下 TypoScript 片段(与 config.tx_extbase 配置相同的文件):

config.tx_extbase {
    persistence {
        classes {
         YourVendor\YourextNamespace\Domain\Model\YourClass {
            mapping {
               tableName = fe_users
               recordType = 0
            }
        }
    }
}

这会强制 extbase 忽略 recordType 并始终使用您的模型。

Documentation/Full例子(包括recordType解释):https://docs.typo3.org/typo3cms/ExtbaseFluidBook/6-Persistence/5-modeling-the-class-hierarchy.html