我有一个实体City
,其中存储了超过30000个对象。用户可以将Address
对象与ManyToOne
关联添加到City
。
但在表单构建期间,<input>
类型无线电或select
的呈现不适合对象的数量......
我使用以下实现代码(它是一个代码段):
public function buildForm(FormBuilderInterface $builder, array $options)
{
/* Pattern to get cities */
$pattern = 'Bor%'; //I use this filter to reduce the number of objects but not sufficient
$builder
->add('city', EntityType::class, array(
'class' => 'AppPlatformBundle:City',
'choice_label' => 'name',
'multiple' => false,
'expanded' => true,
'query_builder'=> function(CityRepository $repository) use($pattern) {
return $repository->getCitiesWithPattern($pattern);
}));
}
我认为解决方案是使用TextType,用户在开始输入任何内容时可以选择提案。但我不知道如何实现这一点。
请问我的问题有解决方案吗?
谢谢
答案 0 :(得分:1)
完成以下步骤:
答案 1 :(得分:1)
非常感谢Fabien。
我能够为我实施一个好的解决方案:)
因此,对于对我的解决方案感兴趣的任何人:
我将城市字段定义为HiddenField,如:
$builder
->add('city', HiddenType::class);
我使用Data Transformer将City
对象转换为唯一ID(对象的字段ID)
在Twig模板中,我实现了jQuery-ui Autocomplete
在后端,我创建了一个能够返回Json响应的路由,所有城市都通过term
jQuery插件进行过滤。
在前端,我开发了一个jquery脚本,用于追加类型为Text
的新字段“city”和自动完成操作。
收到回复后,我填写city
字段Hidden
,其中包含ID。