繁体   English   中英

TYPO3 TCA类型“选择”性能问题

[英]TYPO3 TCA type “select” performance issue

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

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

TCA类型为“ group”并且(非常重要!)设置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持久性期间的依赖性。 它应具有与允许的属性相同的值。 请注意,与允许的属性本身相反,此处仅允许使用一个表名。

查找将internal_type设置为dbgroup ,以作为select类型的替代方法; 这正是您在这里需要的。 这是允许您使用特定用例的唯一字段类型。

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

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

我正在使用旧的TCA字段类型“ group”,这在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
            ]
        ]
    ]
]

一种选择是将字段设置为“只读”。 当然,然后您不能在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
],

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM