【发布时间】:2018-09-14 11:52:05
【问题描述】:
我构建了一个带有选择框 (EntityType) 的表单,其中包含大量选择(大约 50 000 个):
->add(
'destination', EntityType::class, array(
'label' => 'à',
'multiple' => false,
'required' => false,
'class' => Stop::class,
'attr' => array(
'class' => 'form-control',
)
)
);
我面临一个很大的性能问题:当我点击列表时,它会在显示列表前几十秒。
我想解决方案是最初只加载几个元素(例如一百个),然后在用户开始输入时使用 Ajax 请求数据库(我正在使用带有搜索字段的 select2 框)。 问题是我无法通过 Symfony 找出最有效的方法。
我已经看到choice_loader 功能可以做到这一点,但没有可用的详细文档:https://symfony.com/blog/new-in-symfony-3-2-lazy-loading-of-form-choices
如果有人能帮上忙就好了,
感谢您的支持,
【问题讨论】:
-
自动补全就是答案。 Marcos 在下面列出了一个选项作为答案。我在PUGX autocompleter 上也取得了成功。
-
您好,感谢您的反馈。我已经尝试过这种方式,它几乎可以工作,但我仍然面临一个问题: - 使用 select2 库它不起作用,我收到以下 js 错误:“if (typeof(text) == 'undefined'){return; }" - 使用 jquery ui,它可以工作,但由于它存储在输入中,如果我希望 Symfony 表单处理器检索它,我只能在字段中显示我的实体的主键,这对于使用来说不是那么直观。 ..知道如何解决这个问题吗?
标签: forms symfony dropdown jquery-selectbox