0

是否有可能对包含数千个条目的表使用 TCA 字段类型“选择”?

不应显示带有条目的选择框(否则记录加载分钟或您收到内存限制或最大执行时间错误),而是类似于搜索字段(如现有向导“建议”)或记录浏览器(如TCA 类型“组”有)。

4

4 回答 4

1

使用 TCA 类型“组”和(非常重要!)设置 foreign_table 是可能的:

'config' => [
    'type' => 'group',
    'internal_type' => 'db',
    'allowed' => 'fe_users',
    'foreign_table' => 'fe_users'
],

从官方文档(https://docs.typo3.org/typo3cms/TCAReference/ColumnsConfig/Type/Group.html#foreign-table):

foreign_table:对于组类型字段,此属性实际上并不存在。需要它作为 Extbase 限制的解决方法。它用于解决 Extbase 持久性期间的依赖关系。它应该与允许的属性保持相同的值。请注意,与允许的属性本身相比,这里只允许一个表名。

于 2017-07-26T09:50:08.037 回答
0

寻找groupwith internal_typeset todb作为select类型的替代;这正是您在这里需要的。这是唯一允许您的特定用例的字段类型。

替代方法包括使用input字段类型并将其与向导匹配,然后配置向导以替换原始字段并仅显示向导。

不要忘记检查您列出的表的 SQL 键。如果您的列表使用未索引的列,您可以通过简单地为您使用的列添加 SQL 索引来将时间减少到极端程度。

于 2017-07-25T14:12:32.537 回答
0

一种选择是将字段设置为“只读”。当然,不能在 TYPO3 BE 中编辑此字段,但如果数据来自外部来源,这是我可以忍受的缺点。

'config' => [
    'type' => 'select',
    'foreign_table' => 'fe_users',
    'size' => 1,
    'minitems' => 1,
    'maxitems' => 2, // it has to be > 1 because else a selectbox is rendered
    'readOnly' => 1, // readOnly because of performance issues
],
于 2017-07-25T15:04:46.577 回答
0

我正在使用旧的 TCA 字段类型“组”,它也在 TYPO3 CMS 8 中解决了这种行为

'my_select_field' => [
    'label' => 'My select field',
    'config' => [
        'type' => 'group',
        'internal_type' => 'db',
        'allowed' => 'my_foreign_table_name',
        'size' => 1,
        'minitems' => 0,
        'maxitems' => 1,
        'suggestOptions' => [
            'default' => [
                'pidList' => 0,
                'searchCondition' => 'hidden=0',
                'searchWholePhrase' => 1
            ]
        ]
    ]
]
于 2017-07-25T14:16:34.613 回答