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

时间:2017-05-04 16:43:14

标签: typo3 extbase typo3-7.6.x

我创建了一个后端扩展,并通过4个额外的字段扩展了fe_user。

我正在使用TYPO3 7.6.13。

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

我需要在我的字段中扩展任何“特殊”列表吗?我的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'
);

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

2 个答案:

答案 0 :(得分:2)

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

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

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

  • 扩展Extbase模型(Property,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并始终使用您的模型。

文档/完整示例(包括recordType解释):https://docs.typo3.org/typo3cms/ExtbaseFluidBook/6-Persistence/5-modeling-the-class-hierarchy.html

答案 1 :(得分:0)

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

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

你有没有想过这个?