自定义 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
我创建了一个后端扩展并扩展了 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